07 Temmuz 2020, 19:30:42

Haberler:

Picproje Pazar Sohbetleri: https://bit.ly/2GHsjAK


Aceminin python sorulari

Başlatan z, 25 Nisan 2020, 14:30:48

z

25 Nisan 2020, 20:46:22 #15 Son düzenlenme: 25 Nisan 2020, 20:55:02 z
from Motion import *

X=1
Artim
=10

Send
(X)
------------------------

Motion.py dosyasinda

def Send(Data):
    global 
X             # Bu X Ana programdaki globol X olarak algilanmiyor 
    
global Artim         # Bu Artim Ana programdaki globol Artim olarak algilanmiyor
    
SendSPI(Data+Artim)
    
X=Data+Artim         # Bu X Ana programdaki globol X olarak algilanmiyor


Sanki Motion.py icinde tanimlanmis global X, Artim gibi ele aliniyor.
Halbuki ben hem ana programdan hem de Motion.py programindan ayni X ve Artim degerlerine ulasmak istiyorum.

Ustelik X=Data+Artim islemine de kiziyor. Sanki string ile int topladigimi saniyor

TypeError: can only concatenate str (not "int") to str

z

def SetX(BurasiIlerlemeX_MotorundaBirTamTurKacMikrometre):        # Ilerleme Incremental Data
    
if Ilerleme != 0:
      
Clock=CalcClock(IlerlemeX_MotorundaBirTamTurKacMikrometre)
      
SendSPI(Clock 0x0FFF)
      
SendSPI(((Clock >> 12) & 0x0FFF) | 0x1000)
    return(
Burasi+Ilerleme)
Program calisiyor Hata da vermiyor. Ne zaman SetX fonksiyonunu cagirirsam asagidaki hatayi aliyorum.

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Bulent\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users/Bulent/Desktop/3DPrinter/MyPrinter.py", line 115, in XPButtonClick
    X=SetX(X, Artim, X_MotorundaBirTamTurKacMikrometre)
  File "C:\Users\Bulent\Desktop\3DPrinter\Motion.py", line 15, in SetX
    return(Burasi+Ilerleme)
TypeError: can only concatenate str (not "int") to str

muhittin_kaplan

Burasi+ilerleme işleminde iki string istiyor.
Biri string diğeri int ise yapamaz.
Int int ise toplama yapar
Str str ise birleştirir
Sanirim string int var orada
 

fide

Alıntı yapılan: z - 25 Nisan 2020, 21:15:28def SetX(BurasiIlerlemeX_MotorundaBirTamTurKacMikrometre):        # Ilerleme Incremental Data
    
if Ilerleme != 0:
      
Clock=CalcClock(IlerlemeX_MotorundaBirTamTurKacMikrometre)
      
SendSPI(Clock 0x0FFF)
      
SendSPI(((Clock >> 12) & 0x0FFF) | 0x1000)
    return(
Burasi+Ilerleme)
Program calisiyor Hata da vermiyor. Ne zaman SetX fonksiyonunu cagirirsam asagidaki hatayi aliyorum.

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Bulent\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users/Bulent/Desktop/3DPrinter/MyPrinter.py", line 115, in XPButtonClick
    X=SetX(X, Artim, X_MotorundaBirTamTurKacMikrometre)
  File "C:\Users\Bulent\Desktop\3DPrinter\Motion.py", line 15, in SetX
    return(Burasi+Ilerleme)
TypeError: can only concatenate str (not "int") to str

işlemi şu şekle çevirirseniz hata vermeyecektir.

return(int(Burasi)+int(Ilerleme))
yada ondalıklı değer varsa

return(float(Burasi)+float(Ilerleme))
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

muhittin_kaplan

type(Degisken) diyerek değişkenin dataType ini görebilirsin hocam

z

Iki programi birlestirip tek dosya haline getirince bahsettigim X=Data+Artim  sorunu bitti.

z

def OpenFile():
    
root.filename filedialog.askopenfilename(initialdir="."title "Select file"filetypes = (("gcode files","*.txt"), ("all files","*.*")))
    print(
root.filename)
    
with open(root.filenamenewline='') as f:
        global 
SatirSayisi
        
global reader
        SatirSayisi 
0
        reader 
csv.reader(f)
        for 
line in reader:
            print(
', '.join(line))
            
SatirSayisi=SatirSayisi+1
        EkrandaGoster
()

Yukaridaki fonksiyonla sectigim dosyayi okuyor ve dosyadaki satir sayisini ogreniyorum/sayiyorum

Asagidaki fonksiyonla da dosyanin ilk 6 satirini labellara yazoyorum. Ama ise yaramiyor. Hic bir sey yazmiyor.


def EkrandaGoster():

    
i=1
    
global reader
    
for line in reader:
        if 
i==1:
           
Satir1['text'] = line
        
if i==2:
           
Satir2['text'] = line
        
if i==3:
           
Satir3['text'] = line
        
if i==4:
           
Satir4['text'] = line
        
if i==5:
           
Satir5['text'] = line
        
if i==6:
           
Satir6['text'] = line
        i
=i+1;

Bu kodlarda ne hatasi yapiyorum?
Guzel sekilde siz yazabilirmisiniz?

reader degiskenindeki herhangi bir satiri nokta atisi nasil okurum? Mesela Reader[5] 5. satiri oku gibi.

muhittin_kaplan


z

26 Nisan 2020, 19:08:10 #23 Son düzenlenme: 26 Nisan 2020, 19:27:32 z
Hocam bu dili ogenmeye zamanim yok, diger dillerdeki mantigi kullanarak alel acele isimi bitirip kurtulmak istiyorum.

global reader olarak tanimladigim reader icine reader = csv.reader(f) ile dosyayi attigima gore (atmiyor galiba, daha sonra satir satir okuyorum herhalde)

EkrandaGoster fonksiyonunda neden readerin ici bosaliyor anlamadim. Bosalmasi diye global tabimlamistim halbuki.


z

26 Nisan 2020, 19:29:29 #24 Son düzenlenme: 26 Nisan 2020, 19:30:49 z
Sorunu anladim ama cozumunu bilmiyorum.

Dosyayi satir satir okuyup bu satirlari array icine atayim.

Atayim ama bu sekilde dosyadan okunan her bir satir arrayin bir elemani olacak sekilde global bir array nasil tanimlanir?
Dosyam olsun olsun 10 bin satir olsun.

 

z

26 Nisan 2020, 19:39:42 #25 Son düzenlenme: 26 Nisan 2020, 19:48:10 z
Dosyamiz= [[] for _ in range(10000)]

"""
  Okunan Dosyayi ekranda gosterelim
"""
def EkrandaGoster():
    global 
Dosyamiz
    Satir1
['text']=Dosyamiz[0]
    
Satir2['text']=Dosyamiz[1]
    
Satir3['text']=Dosyamiz[2]
    
Satir4['text']=Dosyamiz[3]
    ....
    ....

def OpenFile():
    
root.filename filedialog.askopenfilename(initialdir="."title "Select file"filetypes = (("gcode files","*.txt"), ("all files","*.*")))
    print(
root.filename)
    
with open(root.filenamenewline='') as f:
        global 
SatirSayisi
        
global Dosyamiz
        SatirSayisi 
0
        reader 
csv.reader(f)
        for 
line in reader:
            print(
', '.join(line))
            
Dosyamiz[SatirSayisi]=line;
            
SatirSayisi=SatirSayisi+1
        EkrandaGoster
()

Boyle oldu.

muhittin_kaplan

26 Nisan 2020, 19:43:58 #26 Son düzenlenme: 26 Nisan 2020, 19:45:37 muhittin_kaplan
satır satır okumak için readline var.

dizi (array) oluşturmak için
dizi=[]

diziye eleman eklemek için
dizi. append("test")

ikiboyutluDizi=[[]]

ikiboyutluDizi[ 0]. append("test0")
ikiboyutluDizi[ 0].append("test0")

ikiboyutluDizi[ 1].append("test1")
ikiboyutluDizi[ 1].append("test1")

test0  test0
test1  test1

z

26 Nisan 2020, 19:57:30 #27 Son düzenlenme: 26 Nisan 2020, 20:07:16 z
Soru 1

tkinter ile label kullaniminda bir sorun yasiyorum.

Satir1 = Label(root, text="", width=56, fg="black", font=("Helvetica", 20, 'bold'), justify=LEFT, relief=FLAT)
Satir2 = Label(root, text="", width=56, fg="gray", font=("Helvetica", 20, 'bold'), justify=LEFT, relief=FLAT)

Satir1.place(x=12, y=12)
Satir2.place(x=12, y=42)

Satir1['text'] = "11111111111111111111111111111111111111111111111111111"
Satir2['text'] = "21111111111111111111111111111111                              "

justify=LEFT tanimladigim halde labellara yerlestirdigim textler labelda sola dayali degil tam ortada gorunuyor.

Nerde hata yapiyorum?

Cevap 1

Istedigim anchor parametresi ile yapiliyormus.

Satir1 Label(roottext=""width=56fg="black"font=("Helvetica"20'bold'), justify=LEFTanchor=Wrelief=FLAT)
Satir2 Label(roottext=""width=56fg="gray"font=("Helvetica"20'bold'), justify=LEFTanchor=Wrelief=FLAT)

sorunu cozdu.

z

26 Nisan 2020, 20:46:18 #28 Son düzenlenme: 26 Nisan 2020, 20:47:35 z
Soru 2

Bir fonksiyonuma girilince fonksiyonun isleri tamamlamasi bazen 10 saati bulacak.

Delphi de bu tur durumlarda makine diger tasklarla ugrasabilsin not responding mesaji vermesin diye
fonksiyon icindeki ana dongu icinde application.processmessages diye bir komut isletiyordum.

Simdi pythonda da ayni seye ihtiyacim olacak gibi gorunuyor ama emin degilim cunku Linuxda isler nasil yuruyor hic fikrim yok.

Diyelim ki bir fonksiyon yazdiniz. Fonksiyon bir counteri 1 1 artirarak hedef degere ancak 1 saat sonra erisecek olsun. Bu sayim esnasinda fonksiyondan hic cikmasin dongude kalsin. Bu sayim islemi esnasinda ekrandaki butonlara falan da tiklayabileyim, ekrani minimize maximize edebileyim.

Bu esnada linux diger isleri ile de ilgilenebilsin.

Bu is python da nasil yapilir?


z

Soru 3

Yazdigim program uzadikca uzadi artik programi parcalara bolmenin vakti geldi.

Upuzun bir programi uygun bir yerinden  bolup iki parcaya ayirmak istiyorum.

1. program 2.programi include edecek.

Python da bu islem nasil yapilir?