gpt4 book ai didi

python - 如何通过单击按钮重新执行我的 Python 程序

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:37 25 4
gpt4 key购买 nike

我有一个我正在无休止地编辑的程序,每次我进行更改时,我都必须退出并重新启动。我希望能够重新加载并重新启动,而不必退出并再次返回。

这是一个名为 reload.py 的文件中的简单程序,如果有类似 reexec 的东西可用,它会执行我想要的操作:

from tkinter import *

class Application(Frame):
def do_load(self):
print("time to reload")
reexec("reload.py")

def __init__(self, master=None):
Frame.__init__(self, master)
self.pack()
self.my_reload = Button(self)
self.my_reload["text"] = "Reload",
self.my_reload["command"] = self.do_load
self.my_reload.pack()


if __name__ == '__main__':
root = Tk()
app = Application(master=root)
app.mainloop()

我尝试使用 Application 类的重新加载:

def do_load(self):
print("time to reload")
reload(Application)

我得到一个错误:

File "python3.4/importlib/__init__.py", line 122, in reload
raise TypeError("reload() argument must be module")
TypeError: reload() argument must be module

这是一个 RTFM 案例,我需要了解更多有关模块的信息吗?

我们很乐意接受任何帮助或建议。

最佳答案

为了在此处使用 importlib,您必须重新加载主模块,并终止 TK 实例,这样 python 才能成功地重新创建另一个包含已编辑源代码的模块。

主.py

from tkinter import *


class Application(Frame):
def __init__(self, master=None, on_reload=None):
Frame.__init__(self, master)
self.pack()
self.my_reload = Button(self)
self.my_reload["text"] = "Reload",
self.my_reload["command"] = on_reload
self.my_reload.pack()

执行器.py

import tkinter
import importlib
import main


class Executor:
def __init__(self):
self.root = tkinter.Tk()
self.app = main.Application(master=self.root, on_reload=self.on_reload)
self.app.mainloop()

def on_reload(self):
self.root.destroy()

importlib.reload(main)

self.root = tkinter.Tk()
self.app = main.Application(master=self.root, on_reload=self.on_reload)
self.app.mainloop()


if __name__ == '__main__':
Executor()

关于python - 如何通过单击按钮重新执行我的 Python 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35614748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com