Tkinter Чтение входного значения из PopUp - PullRequest
0 голосов
/ 04 января 2019

Создание всплывающего окна, которое попросит ввести адрес электронной почты, а затем распечатать письмо при нажатии «ОК», это мой код:

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'

Всплывающее окно работает так, как должно, но его входная запись не работает.Я видел этот пример раньше, но его не было во всплывающем окне (я могу заставить его работать без всплывающего окна).

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 04 января 2019

Вы можете сохранить значение в переменной 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...