문제

나는 99% 파이썬이 첫 바이트 컴파일 된 후 TK Windows를 열기 때문에 불가능하지만 앱을 저장 한 후 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