我99%这是不可能的,因为python是第一个字节编译然后可能打开Tk窗口,但我想知道是否有任何情况下添加一个按钮来刷新你的tk应用程序到位后保存它实际上写的应用程序?
你可以想象在更新填充或一些次要属性之后,只需按下按钮刷新框架而不是关闭并启动新实例就太酷了。
东西...
class myapp()
def __init___(self,root):
self.root = root
main_menu = ttk.Frame(self.root)
ttk.Button(main_menu,text="Refresh",command=lambda root=self.root:refresh_me(root)))
def refresh_me(self,root):
#refresh the window I'm in somehow...
root = Tkinter.Tk()
myapp = myapp(root)
root.mainloop()
答案 0 :(得分:1)
这并不能完全回答这个问题,但确实提供了实现既定目标的途径
首先easy_install q
然后
class myapp()
def __init___(self,root):
self.root = root
main_menu = ttk.Frame(self.root)
ttk.Button(main_menu,text="Refresh",command=lambda root=self.root:refresh_me(root)))
def shell_me(self,root):
#refresh the window I'm in somehow...
import q
q.d()
此时shell会打开,您可以执行类似
的操作>>> myapp.padding = "10px" #or whatever you are trying to modify
>>> exit()
然后您的应用将以更新的参数恢复。
还有其他选项,比如pycrust打开一个交互式shell,它可能不会阻塞主循环,并且可能包含一些额外的功能......但q.d()
在我的经验中是最容易抛出的一个
答案 1 :(得分:1)
你走了:
#name of file is python_script.py
class myapp()
def __init___(self,root):
self.root = root
main_menu = ttk.Frame(self.root)
ttk.Button(main_menu,text="REFRESH",command=lambda self=self:self._update())
def _update(self):
import python_script
python_script.main_refresh(self.root,python_script)
def main_refresh(root,python_script):
reload(python_script)
root.destroy()
python_script.main()
def main():
root = Tkinter.Tk()
myapp = myapp(root)
root.mainloop()
if __name__ == '__main__':
main()