Question

Je suis à 99%, ce n'est pas possible car Python est compilé d'octet, puis ouvre probablement les fenêtres TK, mais je me demande s'il y a des circonstances pour ajouter un bouton pour actualiser votre application TK en place après avoir enregistré l'application réellement écrit?

Vous pouvez imaginer après la mise à jour du rembourrage ou un attribut mineur, il serait si cool de simplement appuyer sur le bouton pour rafraîchir le cadre au lieu de fermer et de démarrer une nouvelle instance.

quelque chose...

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()
Était-ce utile?

La solution

Wow je l'ai compris. J'ai fait deux plats principaux. L'un à importer et l'autre pour actualiser.

Voici:

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

Autres conseils

Cela ne répond pas exactement à la question mais fournit un chemin vers votre objectif déclaré

première easy_install q

alors

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

à quel moment une coquille s'ouvre et vous pouvez faire quelque chose comme

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

Votre application reprendra avec les paramètres mis à jour.

Il existe d'autres options comme PYCRURT qui ouvrent un shell interactif qui peut ne pas bloquer la boucle principale et inclure probablement des fonctionnalités supplémentaires ... mais q.d() est dans mon expérience le plus facile à jeter

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top