Python 如何避免tkinter在导入期间弹出窗口?

Python 如何避免tkinter在导入期间弹出窗口?,python,tkinter,import,popup,Python,Tkinter,Import,Popup,有没有办法在不弹出窗口的情况下运行root=tk.tk() 我正在tkinter UI中使用Python3.8.3。我正在尝试从我的主脚本运行一个脚本(我将称之为侧脚本,如果有更好的术语,请道歉)。其想法是,用户将单击主脚本窗口上的按钮,并显示侧脚本窗口。如果我单独运行side脚本,它可以正常工作。若我从主脚本调用side脚本,那个么我会得到错误,因为root是一个局部变量。我可以通过在side脚本中将root定义为全局变量来解决这个错误。然而,当我这样做时,导入side会导致一个空的tkint

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

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

如果侧脚本为:

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

if __name__ == "__main__":
    main()
else:
    pass
root = tk.Tk()

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

if __name__ == "__main__":
    main()
else:
    pass
错误:从主脚本调用时未定义名称“root”

如果侧脚本为:

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

if __name__ == "__main__":
    main()
else:
    pass
root = tk.Tk()

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

if __name__ == "__main__":
    main()
else:
    pass
root现在是一个全局变量,但在导入此行时会弹出一个空白的tkinter窗口
root=tk.tk()


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

为了避免窗口弹出,让边脚本作为参数扎根

旁白:

def main(my_root):
    app = MainApp(my_root)
    my_root.mainloop()
比这更好的是,将所有内容放在一个类中。这样,就可以一起订购,而不必进口任何东西。此外,如果要打开的窗口是主窗口的子窗口,则可以使用Toplevel。

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

不,没有。你的代码设计有缺陷。您不应该导入在全局级别具有该行代码的脚本

最简单的解决方案是将该行代码移动到
if
语句中,就像您在第一个块中所做的那样:

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

if __name__ == "__main__":
    main()

如果您从代码的其他部分收到一些错误,抱怨全局变量
root
,那么错误就在该代码中,而不是在您导入的代码中。正确的解决方案是删除对全局变量的依赖关系。这样,或者将
root
声明为
main

root.draw()
隐藏窗口并将其恢复,您可以使用
root.iconify()
您关于第一个块的声明不正确。如果我创建一个简单的脚本来导入第一个块,它不会给出你所说的错误。这确实取决于主脚本的设计,但你没有发布主脚本。我想我应该发布更多的代码。我担心焦点会转移。吸取的教训。不管怎样,我学会了如何隐藏一扇窗户,以及如何修复它。谢谢你们的投入。我的代码设计肯定很糟糕。我只是个初学者。我将删除依赖项,谢谢提示。