انجمنهای فارسی اوبونتو
		کمک و پشتیبانی => برنامهسازی => نویسنده: قاسم طلایی در 16 تیر 1397، 11:42 قظ
		
			
			- 
				با سلام خدمت شما دوستان گرامی
 من به تازگی برنامه نویسی پایتون رو شروع کردم و با استفاده از کتابخانه ی tkinter یک برنامه ی بسیر ساده نوشتم.ولی وقتی کد رو اجرا می کنم و روی کلید کلیک می کنم ارور میده.کد رو در زیر ببینید.
 #include
 from tkinter import *
 #information of app
 app=Tk()
 app.title("Ghasem Talaee")
 app.geometry('800x500')
 #label
 lbl=Label(app,text="welcome to my first app:",font=("Arial",25)).grid(column=0,row=0)
 #input from user
 global txt
 txt=Entry(app,width=20,font=("Arial",20)).grid(column=1,row=0)
 def clicked():
 res="button was cliced and print text box:" + txt.get()
 lbl=Label(app,text=res).grid(column=0,row=1)
 #button
 btn=Button(app,text="click",padx=20,font=("Arial",17),bg="orange",fg="red",command=clicked).grid(column=2,row=0)
 app.mainloop()
 
و اورو زیر رو میده
 Exception in Tkinter callback
 Traceback (most recent call last):
 File "C:\Program Files\Python36\lib\tkinter\__init__.py", line 1702, in __call__
 return self.func(*args)
 File "D:\my project\python\gui\gui1.py", line 13, in clicked
 res="button was cliced and print text box:" + txt.get()
 AttributeError: 'str' object has no attribute 'get'
 
 ممنون میشم راهنمایی بفرمایید.با تشکر
- 
				طبق چیزی که توی ارور نوشته توی خط سیزدهم نوشتی txt.get()در حالی که اون اسم به یه استرینگ اشاره داره ولی کلاس استرینگ متدی به اسم get نداره. من تا حالا با tkinter کار نکردم ولی چیزی که گفتم درباره استرینگ صادقه و به سادگی از روی متن ارور فهمیده میشه.
- 
				طبق چیزی که توی ارور نوشته توی خط سیزدهم نوشتی txt.get()در حالی که اون اسم به یه استرینگ اشاره داره ولی کلاس استرینگ متدی به اسم get نداره. من تا حالا با tkinter کار نکردم ولی چیزی که گفتم درباره استرینگ صادقه و به سادگی از روی متن ارور فهمیده میشه.
 
 متشکر از پاسخ شما،پس به نظر شما راه حل چیه؟
- 
				فهمیدم مشکل از کجاست.باید متد grid را در زیر هر المان تعریف کنیم نه در رو به روی آن.وقتی این متد را در رو به روی المان تعریف کنیم هیچی رو برنمیگردونه.به خاطر همین خطای none type میده.پس کد رو باید اینجوری تغییر بدیم.
 #include
 from tkinter import *
 from tkinter import ttk
 #information of app
 app=Tk()
 app.title("Ghasem Talaee")
 app.geometry('800x500')
 #label
 lbl=Label(app,text="welcome to my first app:",font=("Arial",25))
 lbl.grid(column=0,row=0)
 #input from user
 txt=StringVar()
 txt=Entry(app,width=20,font=("Arial",20))
 txt.grid(column=1,row=0)
 def clicked():
 res="button was clicked and print text box:" + txt.get()
 lbl1=Label(app,text=res)
 lbl1.grid(column=0,row=1)
 #button
 btn=Button(app,text="click",padx=20,font=("Arial",17),bg="orange",fg="red",command=clicked)
 btn.grid(column=2,row=0)
 app.mainloop()
 
 و نتیجه ی اجرای کد:
 https://pasteboard.co/Htm2KGN.jpg (https://pasteboard.co/Htm2KGN.jpg)