Python 从条目窗口小部件保存变量
我想将此输入框的文本输入保存到列表中,然后进行打印。我不能让它在按下按钮时保存输入,它只打印占位符变量Python 从条目窗口小部件保存变量,python,tkinter,Python,Tkinter,我想将此输入框的文本输入保存到列表中,然后进行打印。我不能让它在按下按钮时保存输入,它只打印占位符变量 names = [] from tkinter import* class Trip: def __init__(self, parent): E_name = "q" self.En_name = "g" self.En_name = str(self.En_name) self.go = Frame(par
names = []
from tkinter import*
class Trip:
def __init__(self, parent):
E_name = "q"
self.En_name = "g"
self.En_name = str(self.En_name)
self.go = Frame(parent, width = 500, height = 450, bg = "snow", pady = 30, padx = 10)
self.go.grid(row = 1, column = 0)
self.go.grid_propagate(0) # to reserve space required for frame
self.tet = Frame(parent, width = 500, height = 450, bg = "snow")
name = Label(self.go, text = "Name:", bg = "snow")
name.grid(row = 1, column = 0, sticky = E)
self.E_name = Entry(self.go, width = 40, textvariable = self.En_name)
self.E_name.grid(row = 1, column = 1, sticky = W, pady = 4)
menuButton = Button(self.go, text = "Continue", command = self.breakeverything)
menuButton.grid(row = 8, column = 1, pady = 4)
def breakeverything(self):
names.append(self.En_name)
print (names[0])
self.E_name.delete(0, "end")
#main routine
if __name__ == "__main__":
root = Tk()
root.title("Traveller Details")
play = Trip(root)
root.geometry("500x450+0+0")
root.mainloop()
textvariable
应该是tkinter.StringVar()
,而不是原始字符串。您的应用程序看起来很简单,甚至不需要它。取出self.En_name
,取出textvariable
,只需在breakearthing()
中检索条目
小部件的当前值(该名称不再是合适的名称):
我还建议将
names
移动到Trip.\uuuu init\uuuu
中,并使用self.names=[]
将其作为实例变量。这将使跟踪作用域变得更容易。您错误地使用了textvariable
(您必须使用一个特殊的Tkinter变量,例如StringVar
),但您根本不需要使用它。只需保存对小部件的引用,然后在需要值时调用get
方法:
self.E_name = Entry(self.go, width = 40)
...
print("you entered: " + self.E_name.get())
如果坚持使用textvariable
,请使用StringVar
,然后调用get
方法:
self.En_name = StringVar()
self.E_name = Entry(..., textvariable=self.En_name)
...
print("you entered: " + self.En_name.get())
对不起,我找到了更好的办法!太复杂了,何不问问真人@阿兰·琼斯:有什么复杂的?您只需更改两行代码。必须在小部件或相关变量上调用
get
方法。这就是它的工作原理。没有其他方法可以从小部件中获取数据。
self.En_name = StringVar()
self.E_name = Entry(..., textvariable=self.En_name)
...
print("you entered: " + self.En_name.get())