У меня есть графический интерфейс, использующий Tkinter, у него есть главный экран, а затем, когда вы нажимаете кнопку, появляется всплывающее окно, где вы выбираете кнопку-флажок, а затем вам будет отправлено электронное письмо.
Независимо от того, что я делаю, я не могу прочитать значение этой кнопки как 1
или True
, оно всегда = 0
или False
.
Это мой код:
import tkinter as tk
from tkinter import *
import time
root = tk.Tk()
root.title('Status')
CheckVar1 = IntVar()
def email():
class PopUp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
popup = tk.Toplevel(self, background='gray20')
popup.wm_title("EMAIL")
self.withdraw()
popup.tkraise(self)
topframe = Frame(popup, background='gray20')
topframe.grid(column=0, row=0)
bottomframe = Frame(popup, background='gray20')
bottomframe.grid(column=0, row=1)
self.c1 = tk.Checkbutton(topframe, text="Current", variable=CheckVar1, onvalue=1, offvalue=0, height=2, width=15, background='gray20', foreground='snow', selectcolor='gray35', activebackground='gray23', activeforeground='snow')
self.c1.pack(side="left", fill="x", anchor=NW)
label = tk.Label(bottomframe, text="Please Enter Email Address", background='gray20', foreground='snow')
label.pack(side="left", anchor=SW, fill="x", pady=10, padx=10)
self.entry = tk.Entry(bottomframe, bd=5, width=35, background='gray35', foreground='snow')
self.entry.pack(side="left", anchor=S, fill="x", pady=10, padx=10)
self.button = tk.Button(bottomframe, text="OK", command=self.on_button, background='gray20', foreground='snow')
self.button.pack(side="left", anchor=SE, padx=10, pady=10, fill="x")
def on_button(self):
address = self.entry.get()
print(address)
state = CheckVar1.get()
print (state)
time.sleep(2)
self.destroy()
app = PopUp()
app.update()
tk.Button(root,
text="EMAIL",
command=email,
background='gray15',
foreground='snow').pack(side=tk.BOTTOM, fill="both", anchor=N)
screen = tk.Canvas(root, width=400, height=475, background='gray15')
screen.pack(side = tk.BOTTOM, fill="both", expand=True)
def latest():
#Other code
root.after(300000, latest)
root.mainloop()
Всплывающее окно работает отлично, и электронное письмо будет напечатано при вводе, но значение флажка всегда равно 0.
Я пытался:
CheckVar1 = tk.IntVar()
- Безуспешно
self.CheckVar1
& self.CheckVar1.get()
- Безуспешно
Удаление self.withdraw()
- Безуспешно
У меня только один root.mainloop()
в скрипте, я использую app.update()
для всплывающего окна, потому что без этого оно не откроется.
Я проверил эти существующие вопросы для решения, и ни один не помог:
Self.withdraw - Невозможно заставить кнопку tkinter нормально работать при запуске в качестве скрипта
Self.CheckVar1 - Переменная флажка TKInter всегда 0
Только один экземпляр mainloop () - Значение кнопки Python tkinter всегда равно 0
Я также проверил очень похожие вопросы, но не собирался публиковать их все.
Любая помощь приветствуется.