我想知道Toplevel用戶手動打開或關閉視窗,只有一個打開按鈕用于打開視窗。我試圖用 來做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()
uj5u.com熱心網友回復:
看起來你把globals 放在了錯誤的地方,所以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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/456969.html
