如何从入口小部件,tkinter,python获取输入

时间:2017-02-05 15:43:40

标签: python user-interface tkinter

我搜索了如何获取输入,这应该可以工作,但它不... 我不明白为什么它不工作......它开始运行并陷入主循环线...它什么也没显示

from Tkinter import *


class GUI:

def __init__(self):

    self.root = Tk()

    self.label1 = Label(self.root, text="name")
    self.label2 = Label(self.root, text="password")
    self.entry1 = Entry(self.root)
    self.entry2 = Entry(self.root, show="*")
    self.button = Button(self.root, text="hello", command=self.printName)
    self.button.pack()

    self.label1.grid(row=0, sticky=W)  # N, S, E, W
    self.label2.grid(row=1, sticky=E)
    self.entry1.grid(row=0, column=1)
    self.entry2.grid(row=1, column=1)

    self.c = Checkbutton(self.root, text="forgot my password")
    self.c.grid(columnspan=2)

    self.root.mainloop()

def printName(self):

    print self.entry1.get()


hi = GUI()

1 个答案:

答案 0 :(得分:1)

问题在于,对于共享同一父级的小部件,您同时使用 x2 x3 x4 0 -0.557363 1.649005 1.649005 1 1.649005 -0.557363 -0.557363 2 2.497731 3.433690 3.433690 3 3.433690 2.497731 2.497731 4 1.013555 0.679394 0.679394 grid。你做不到 - 你必须选择其中一个。

另外,为了迂腐,你应该在pack之外接听self.root.mainloop()的电话。原因是它在内部时,永远不会完全创建对象,因为__init__在窗口小部件被销毁之前不会返回。通常,您在创建根窗口的同一范围内调用mainloop

例如:

mainloop

如果您不喜欢引用内部窗口小部件,请为hi = GUI() hi.root.mainloop() GUI提供start方法:

mainloop