0

我又遇到了一个问题,我不知道为什么。所有需要的代码都总结在这个屏幕截图中: 代码

“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()

提前非常感谢。

4

0 回答 0