Tkinter 从 PopUp 读取输入值

Tkinter Reading Input Value from PopUp

创建一个弹出窗口 window,它将要求输入电子邮件,然后在按下 'OK' 时打印电子邮件,这是我的代码:

import tkinter as tk

class PopUp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        tk.Label(self, text="Main Window").pack()
        popup = tk.Toplevel(self)
        popup.wm_title("EMAIL")
        popup.tkraise(self)
        tk.Label(popup, text="Please Enter Email Address").pack(side="left", fill="x", pady=10, padx=10)
        self.entry = tk.Entry(popup, bd=5, width=35).pack(side="left", fill="x")
        self.button = tk.Button(popup, text="OK", command=self.on_button)
        self.button.pack()

    def on_button(self):
        print(self.entry.get())

app = PopUp()
app.mainloop()

每次我 运行 我都会得到这个错误:

AttributeError: 'NoneType' object has no attribute 'get'

弹出窗口正常工作,但它的输入条目似乎不起作用。 我以前见过这个例子,但它不在弹出窗口中(我可以在没有弹出窗口的情况下完美运行)。

感谢任何帮助。

您可以将值存储在 StringVar 变量中,get() 它的值。

import tkinter as tk
from tkinter import StringVar

class PopUp(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)        
        tk.Label(self, text="Main Window").pack()
        popup = tk.Toplevel(self)
        popup.wm_title("EMAIL")
        popup.tkraise(self)        
        tk.Label(popup, text="Please Enter Email Address").pack(side="left", fill="x", pady=10, padx=10)
        self.mystring = tk.StringVar(popup)
        self.entry = tk.Entry(popup,textvariable = self.mystring, bd=5, width=35).pack(side="left", fill="x")
        self.button = tk.Button(popup, text="OK", command=self.on_button)
        self.button.pack()

    def on_button(self):
        print(self.mystring.get())

app = PopUp()
app.mainloop()