嗨,我是python gui的新手,已经被困在这个问题上好几个小时了。我需要在def中的一个输入框中调用一个名字,使用另一个def并继续收到错误:
line 15, in callback
name = (username.get())
AttributeError: 'str' object has no attribute 'get'
我正在使用代码:
from tkinter import *
username = str();
e = object();
def getname():
global username
e = Entry(root, textvariable=username)
e.pack()
e.focus_set()
b = Button(root, text = "OK", width = 10, command = callback)
b.pack()
def callback():
name = (username.get())
print(name)
root = Tk()
getname()
mainloop()
如果我执行e.get()它会出现相同的错误,除了'object'而不是'string'
感谢任何帮助,谢谢
答案 0 :(得分:1)
你对编写代码的方式会遇到很多挑战,因为你开始tkinter
编程我会建议你这样做以达到相同的结果。你不必声明全局使用此变量通过此示例获取entry
中的内容。
from tkinter import *
def callback():
name = (e.get())
print(name)
root = Tk()
e = Entry(root)
e.pack()
e.focus_set()
b = Button(root, text="OK", width=10, command=callback)
b.pack()
mainloop()
答案 1 :(得分:1)
您将username
设置为Entry
的textvariable
,这意味着它是Tkinter variable,例如StringVar
。将username
从字符串更改为StringVar时,可以使用您拥有的.get()
方法。唯一的事情是你必须在创建Tk()
实例后声明它,因为StringVar与根关联:
from tkinter import *
e = object()
def getname():
global username
e = Entry(root, textvariable=username)
e.pack()
e.focus_set()
b = Button(root, text = "OK", width = 10, command = callback)
b.pack()
def callback():
name = (username.get())
print(name)
root = Tk()
username = StringVar()
getname()
root.mainloop()
答案 2 :(得分:-1)
不幸的是,python中没有 username.get()(因为没有get()函数,即使是字符串)。也许这会起作用(我还没有测试过这个):
def callback():
global username
name = username
print(name)