انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: قاسم طلایی در 16 تیر 1397، 11:42 ق‌ظ

عنوان: مشکل در اجرا شدن کد در پایتون در کتابخانه ی tkinter(برنامه نویسی گرافیکی پایتون)
ارسال شده توسط: قاسم طلایی در 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'

ممنون میشم راهنمایی بفرمایید.با تشکر
عنوان: پاسخ : مشکل در اجرا شدن کد در پایتون
ارسال شده توسط: mahdi7d1 در 16 تیر 1397، 12:46 ب‌ظ
طبق چیزی که توی ارور نوشته توی خط سیزدهم نوشتی txt.get() در حالی که اون اسم به یه استرینگ اشاره داره ولی کلاس استرینگ متدی به اسم get نداره. من تا حالا با tkinter کار نکردم ولی چیزی که گفتم درباره استرینگ صادقه و به سادگی از روی متن ارور فهمیده میشه.
عنوان: پاسخ : مشکل در اجرا شدن کد در پایتون
ارسال شده توسط: قاسم طلایی در 16 تیر 1397، 12:55 ب‌ظ
طبق چیزی که توی ارور نوشته توی خط سیزدهم نوشتی txt.get() در حالی که اون اسم به یه استرینگ اشاره داره ولی کلاس استرینگ متدی به اسم get نداره. من تا حالا با tkinter کار نکردم ولی چیزی که گفتم درباره استرینگ صادقه و به سادگی از روی متن ارور فهمیده میشه.
متشکر از پاسخ شما،پس به نظر شما راه حل چیه؟
عنوان: پاسخ : مشکل در اجرا شدن کد در پایتون
ارسال شده توسط: قاسم طلایی در 16 تیر 1397، 05:20 ب‌ظ
فهمیدم مشکل از کجاست.باید متد 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)