我是99%,因为Python首先是字节编译,然后可能打开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()
有帮助吗?

解决方案

哇,我发现了。我做了两个主。一个要进口,另一个要刷新。

干得好:

#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() 

其他提示

这并不是完全回答这个问题,但确实为您的既定目标提供了途径

第一的 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()

在这一点上,炮弹打开了,您可以做类似的事情

>>> myapp.padding = "10px" #or whatever you are trying to modify
>>> exit()

然后,您的应用将使用更新的参数恢复。

还有其他选项,例如Pycrust打开交互式外壳,可能不会阻止主循环,并且可能包含一些其他功能...但是 q.d() 以我的经验,最容易扔掉的人

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top