首页 > 解决方案 > 如何避免 tkinter 在导入过程中弹出窗口?

问题描述

有没有办法在root = tk.Tk()不弹出窗口的情况下运行?

我正在使用带有 tkinter UI 的 Python3.8.3。我正在尝试从我的主脚本中运行一个脚本(我将其称为辅助脚本,如果有更好的术语表示歉意)。这个想法是,用户将单击主脚本窗口上的一个按钮,然后将出现侧脚本窗口。如果我单独运行辅助脚本,它可以正常工作。如果我从主脚本调用辅助脚本,则会出现错误,因为 root 是一个局部变量。我可以通过在脚本中将 root 定义为全局变量来解决这个错误。但是,当我这样做时,导入 side 会导致一个空的 tkinter 窗口。

如果脚本是:

def main():
    root = tk.Tk()
    app = MainApp(root)
    root.mainloop()

if __name__ == "__main__":
    main()
else:
    pass

错误:从主脚本调用时未定义名称“root”

如果脚本是:

root = tk.Tk()

def main():
    app = MainApp(root)
    root.mainloop()

if __name__ == "__main__":
    main()
else:
    pass

root 现在是一个全局变量,但是在导入此行期间会弹出空白 tkinter 窗口root = tk.Tk()

你能推荐我一个克服这个问题的好方法吗?

标签: pythontkinterimportpopup

解决方案


为避免弹出窗口,请让侧脚本以root作为参数。

边脚本:

def main(my_root):
    app = MainApp(my_root)
    my_root.mainloop()

比这更好,把所有东西都放在一个类里。这样,所有的东西都一起订购,您不必导入任何东西。此外,如果您打开的窗口是主窗口的子窗口,则可以使用 Toplevel。 如何使用 Python tkinter 创建子窗口?


推荐阅读