Domanda

Sono al 99%, questo non è possibile dal momento che Python è il primo byte compilato, probabilmente apre le finestre TK, ma mi chiedo se ci sono circostanze per aggiungere un pulsante per aggiornare la tua app TK in atto dopo aver salvato l'app è effettivamente scritto?

Puoi immaginare dopo aver aggiornato l'imbottitura o un attributo minore, sarebbe così bello premere il pulsante per aggiornare il frame invece di chiudere e avviare una nuova istanza.

qualche cosa...

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()
È stato utile?

Soluzione

Wow, l'ho capito. Ho realizzato due mains. Uno da importare e l'altro da aggiornare.

Ecco qui:

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

Altri suggerimenti

Questo non risponde esattamente alla domanda ma fornisce un percorso al tuo obiettivo dichiarato

primo easy_install q

poi

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

A quel punto si apre un guscio e puoi fare qualcosa di simile

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

La tua app riprenderà quindi con i parametri aggiornati.

Ci sono altre opzioni come Pycrust che aprono una shell interattiva che potrebbe non bloccare il ciclo principale e probabilmente includere alcune funzionalità aggiuntive ... ma q.d() è nella mia esperienza il più semplice da lanciare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top