我有一个tkinter窗口,其中有一个打开Toplevel窗口的按钮。我在柜台的帮助下限制了窗户的数量。
但每次我单击按钮打开窗口时,WM_DELETE_window协议都会执行(与重置计数器功能绑定(并重置我的计数器。
from tkinter import *
root = Tk()
# root stuff
btn1 = Button(root,text="Add Book",command=lambda: [add_open(), addBook()]).pack()
# add_open() is the counter function
root.mainloop()
在saparate文件中定义的addBook((函数
def addBook():
if add_check(): # check counter
AddBookWindow = Toplevel()
# more block of code
AddBookWindow.protocol("WM_DELETE_WINDOW", add_close()) # reset counter
AddBookWindow.mainloop()
在不同文件中定义的计数器功能
def add_check():
with open(r"countersaddbook.txt", "r") as file:
a = file.read()
return True if a == "1" else False
def add_open():
with open(r"countersaddbook.txt", "a") as file:
file.write("1")
def add_close():
print("add close")
with open(r"countersaddbook.txt", "w") as file:
file.write("")
您执行了add_close()
并将结果传递给protocol()
。请改用AddBookWindow.protocol("WM_DELETE_WINDOW", add_close)
。(类似acw1668的答案。(