1

我 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()
4

2 回答 2

2

哇,我想通了。我做了两个主线。一个用于导入,另一个用于刷新。

干得好:

#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() 
于 2013-11-07T01:22:12.760 回答
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()

此时会打开一个外壳,您可以执行类似的操作

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

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

还有其他选项,例如 pycrust,它可以打开一个交互式 shell,它可能不会阻塞主循环,并且可能包含一些额外的功能……但q.d()根据我的经验,这是最简单的一个

于 2013-11-06T23:47:58.767 回答