python - 如何避免 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()
你能推荐我一个克服这个问题的好方法吗?
解决方案
为避免弹出窗口,请让侧脚本以root作为参数。
边脚本:
def main(my_root):
app = MainApp(my_root)
my_root.mainloop()
比这更好,把所有东西都放在一个类里。这样,所有的东西都一起订购,您不必导入任何东西。此外,如果您打开的窗口是主窗口的子窗口,则可以使用 Toplevel。 如何使用 Python tkinter 创建子窗口?
推荐阅读
- python - 如何在 PyQt5 中在 5 秒内隐藏状态栏?
- azure - 通过禁用 RaiseErrorIfClaimsPrincipalAlreadyExists 来允许“幂等注册”是否明智?
- python - 如何判断 setup() 是否正在读取 setup.cfg?
- npm - 如何在 npx 中指定路径(如 npm --prefix)?
- javascript - 用 javascript 点击时将表单替换为另一个表单
- php - 使用php解密AES中的字符串
- swift - 点击我的 textField 或使用 NS 通知使用键盘时,我的视图不断向上移动
- angular - Angular 单元测试 ngOnInit 订阅
- laravel - laravel 推送器套接字为空
- reactjs - 如何在 React 网络聊天中添加打字指示器