如何检查 Toplevel window 是否打开?
How to check if Toplevel window is opened?
我想知道 Toplevel
window 是由用户手动打开还是关闭,只有一个打开按钮用于打开 window。我试着用 winfo
来做,但由于某种原因它不能正常工作。
from tkinter import *
from tkinter import messagebox
global top
top= None
global counter
counter = 1
global root
root = None
def window1():
root = Tk()
root.geometry("300x200")
root.title('Window1')
my_button = Button(root, text="Open Window", command=openWindow2)
my_button.pack(pady=50, padx=50)
root.mainloop()
def openWindow2():
global counter
if (counter < 2):
top = Toplevel()
top.geometry("300x200")
top.title('Window 2')
my_label = Label(top, text="New Window!", font=("Helvetica, 24"))
my_label.pack(pady=50, padx=50)
counter +=1
else:
checkwind2()
def checkwind2():
if (top is not None) and Toplevel.winfo_exists(top) == 1:
#this situation never happens
print("Window is opened")
else:
print("Window is closed")
window1()
您似乎将 global
放在了错误的位置,因此 top
变量总是显示为 None
。
如果要在函数外编辑变量,需要在函数内global
添加
试试这个:
from tkinter import *
from tkinter import messagebox
top= None
counter = 1
root = None
def window1():
root = Tk()
root.geometry("300x200")
root.title('Window1')
my_button = Button(root, text="Open Window", command=openWindow2)
my_button.pack(pady=50, padx=50)
root.mainloop()
def openWindow2():
global top
global counter
print(counter)
if (counter < 2):
top = Toplevel()
top.geometry("300x200")
top.title('Window 2')
my_label = Label(top, text="New Window!", font=("Helvetica, 24"))
my_label.pack(pady=50, padx=50)
counter +=1
else:
checkwind2()
def checkwind2():
if (top is not None) and Toplevel.winfo_exists(top) == 1:
print("Window is opened")
else:
print("Window is closed")
window1()
我想知道 Toplevel
window 是由用户手动打开还是关闭,只有一个打开按钮用于打开 window。我试着用 winfo
来做,但由于某种原因它不能正常工作。
from tkinter import *
from tkinter import messagebox
global top
top= None
global counter
counter = 1
global root
root = None
def window1():
root = Tk()
root.geometry("300x200")
root.title('Window1')
my_button = Button(root, text="Open Window", command=openWindow2)
my_button.pack(pady=50, padx=50)
root.mainloop()
def openWindow2():
global counter
if (counter < 2):
top = Toplevel()
top.geometry("300x200")
top.title('Window 2')
my_label = Label(top, text="New Window!", font=("Helvetica, 24"))
my_label.pack(pady=50, padx=50)
counter +=1
else:
checkwind2()
def checkwind2():
if (top is not None) and Toplevel.winfo_exists(top) == 1:
#this situation never happens
print("Window is opened")
else:
print("Window is closed")
window1()
您似乎将 global
放在了错误的位置,因此 top
变量总是显示为 None
。
如果要在函数外编辑变量,需要在函数内global
添加
试试这个:
from tkinter import *
from tkinter import messagebox
top= None
counter = 1
root = None
def window1():
root = Tk()
root.geometry("300x200")
root.title('Window1')
my_button = Button(root, text="Open Window", command=openWindow2)
my_button.pack(pady=50, padx=50)
root.mainloop()
def openWindow2():
global top
global counter
print(counter)
if (counter < 2):
top = Toplevel()
top.geometry("300x200")
top.title('Window 2')
my_label = Label(top, text="New Window!", font=("Helvetica, 24"))
my_label.pack(pady=50, padx=50)
counter +=1
else:
checkwind2()
def checkwind2():
if (top is not None) and Toplevel.winfo_exists(top) == 1:
print("Window is opened")
else:
print("Window is closed")
window1()