使用按钮刷新Tkinter窗口中的代码

时间:2013-11-06 23:43:06

标签: python events tkinter ttk

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

2 个答案:

答案 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()