انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: قاسم طلایی در 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)