python重新运行_如何通过单击按钮重新执行Python程序

本文介绍了一个解决方案,用于在不重启Python程序的情况下,通过单击按钮重新加载和执行应用程序GUI。重点是更新核心模块和GUI组件,确保在编辑后使用最新版本。文章详细阐述了如何在保持程序运行的同时,重新加载模块、创建新对象并转移对象所有权,以实现高效且无冲突的更新过程。
摘要由CSDN通过智能技术生成

我刚刚为我正在创建的一个工作项目解决了这个问题。galbendavid提供的答案确实有效,但仅适用于具有单一窗口的应用程序。这是因为tkinter.Tk根是在应用程序初始化时创建的,而不是在脚本底部的condition语句下创建的。所以支持用户1683793把它放在正确的位置。只要root是一个全局变量,就可以很容易地使用它生成具有相同根对象的其他窗口。在

以下面的项目根目录为例。在root/

├── __main__.py

└── myapp/

├── __init__.py

├── core.py

├── datatypes.py

└── gui.py

忽略myapp包的__init__.py文件,有两个模块容纳了这些模块

应用程序的用户界面:保存主窗口的myapp.core模块和包含核心容器使用的所有组件的myapp.gui模块。考虑到更改类意味着更改模块本身,重新加载整个模块更有意义,因此在运行时始终使用最新版本。在

要在不重新启动程序的情况下重新加载应用程序GUI,所使用的进程必须:重新加载已编辑的模块(通常使用importlib.reload)

使用来自旧对象的信息从新模块的内容构建新对象。

确保将任何其他对象/属性的所有权转移到新对象。在

取消对旧对象的引用以进行垃圾回收。这包括旧模块以及与之相关的所有类和函数。在

根/myapp/核心.py

首先,您需要一个容器类,它与GUI组件的其余部分完全隔离。最好从中开始并能够返回空的默认状态,这是当您在编辑root/myapp/gui.py之后尝试重新加载其组件时将保留的状态。此默认状态将只保留菜单栏,其中所有重新加载命令都存储在运行时菜单中。在

^{pr2}$

reload_window和{}方法分别重新加载应用程序的核心模块和

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值