我又遇到了一个问题,我不知道为什么。所有需要的代码都总结在这个屏幕截图中: 代码
“pixela_brain.py”中两个打印语句所在的部分是问题区域:
- print("Before Opening UICreateUser") 按预期显示
- “create_user.py”中的 print("x is clicked") 也按预期显示
- 但是在“create_user.py”中的“self.destroy()”之后,print(“After Closing UICreateUser”) 也应该打印出来,但事实并非如此。
- 只有在关闭 Main Tk 窗口后,第二个打印语句才会执行。
这是为什么?我希望,在从 UICreateUser Toplevel-Window 杀死主循环后,方法“create_user(self)”应该执行到最后。
这是用于复制/粘贴目的的代码:
主文件
from ui_root import UiRoot
app = UiRoot()
pixela_brain.py
from popup_windows.create_user import UiCreateUser
class PixelaBrain:
def __init__(self):
pass
def create_user(self):
print("Before Opening UICreateUser")
self.new_user = UiCreateUser()
print("After Closing UICreateUser")
ui_root.py
from tkinter import Tk, Button
from pixela_brain import PixelaBrain
class UiRoot(Tk):
def __init__(self):
super().__init__()
self.brain = PixelaBrain()
self.button = Button(self, text="Button", command=self.click)
self.button.pack()
self.mainloop()
def click(self):
self.brain.create_user()
创建用户.py
from tkinter import Toplevel
class UiCreateUser(Toplevel):
def __init__(self):
super().__init__()
self.protocol("WM_DELETE_WINDOW", self.click_x)
self.grab_set()
self.mainloop()
def click_x(self):
print("x is clicked")
self.destroy()
提前非常感谢。