返回tkinter值

时间:2017-10-03 18:36:50

标签: python tkinter

我有一个问题是返回输入到我创建的入口点的值,我不知道为什么。

class DbGui:
    def __init__(self, master):
        self.master = master
        self.label = ttk.Label(master, text="Tkinter DB File-r")
        self.label.grid(row=0, column=0, columnspan=2)
        ttk.Button(master, text="Connect", command=self.connect).grid(row=1, column=0)
        ttk.Button(master, text="Disconnect", command=self.disconnect).grid(row=1, column=1)
        ttk.Button(master, text="Submit", command=self.tk_submit).grid(row=1, column=2)
        ttk.Button(master, text="Exit", command=self.tk_exit).grid(row=6, column=3)

    def show_inputs(self):
        # Name
        ttk.Label(self.master, text="Name").grid(row=2, column=0)
        name = ttk.Entry(self.master).grid(row=2, column=1)

        # Date
        ttk.Label(self.master, text="Date").grid(row=3, column=0)
        date = ttk.Entry(self.master).grid(row=3, column=1)
        # Value
        ttk.Label(self.master, text="Value").grid(row=4, column=0)
        value = ttk.Entry(self.master).grid(row=4, column=1)
        return name, date, value

    def tk_submit(self):
        print(name.get()) # This is where I think the problem is.

def main():
    root = Tk()
    app = DbGui(root)
    app.show_inputs()
    root.mainloop()


if __name__ == '__main__':
    main()

如果用户输入这些值以填充变量或列表或其他任何值,我如何获取这些值。我非常对tkinter来说是新手,所以任何建议或帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

您必须将变量name初始化为类的属性(以self.为前缀),并在self.name上单独调用网格(grid确实返回None - 谢谢@MikeSMT):

self.name = ttk.Entry(self.master)
self.name.grid(row=2, column=1)

并将其称为:

def tk_submit(self):
    print(self.name.get())