Programmer une fenêtre indépendante du reste du programme et interactive -python
Résolu/Fermé
Breizhux
Messages postés
368
Date d'inscription
vendredi 1 septembre 2017
Statut
Membre
Dernière intervention
17 novembre 2020
-
Modifié le 16 nov. 2020 à 16:01
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 19 nov. 2020 à 10:30
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 19 nov. 2020 à 10:30
A voir également:
- Programmer une fenêtre indépendante du reste du programme et interactive -python
- Programme demarrage windows 10 - Guide
- Programmer sms - Guide
- Python est introuvable. exúcutez sans argument pour procúder ó l - Forum Python
- Programmer un mail gmail - Guide
2 réponses
Breizhux
Messages postés
368
Date d'inscription
vendredi 1 septembre 2017
Statut
Membre
Dernière intervention
17 novembre 2020
139
Modifié le 17 nov. 2020 à 21:58
Modifié le 17 nov. 2020 à 21:58
Finalement à force de recherche j'ai trouvé une solution pour tkinter (j'ai crus voir qu'il y en avait aussi pour qt et gtk). Plutôt que d'utiliser la boucle mainloop() j'utilise l'évènement update().
Donc en le mettant dans ma boucle qui écoute les évènements extérieurs je peux afficher ma fenêtre et interagir avec celle-ci sans que cette boucle se bloque en attente de fermeture de la fenêtre.
Ça donne quelque chose comme ça :
Donc en le mettant dans ma boucle qui écoute les évènements extérieurs je peux afficher ma fenêtre et interagir avec celle-ci sans que cette boucle se bloque en attente de fermeture de la fenêtre.
Ça donne quelque chose comme ça :
from tkinter import * from time import sleep class Application(Tk) : def __init__(self) : Tk.__init__(self) self.exists = True self.texte = Label(self, text="rien pour le moment") self.afficher = Button(self, text="message", command=self.message) self.bouton = Button(self, text="fermer", command=self.exit) self.texte.pack() self.afficher.pack() self.bouton.pack() def exit(self) : self.exists = "fermee" self.destroy() def message(self) : message = """maintenant il y a un message, et tu ne peux plus appuyer sur [fermer] parce que on ne fait plus App.update() dans la fonction main()""" self.texte.config(text=message) self.texte.update() self.exists = False #ça ne sert à rien ici, mais utile quand la fenêtre est détruite, #l'objet existe toujours et tenter de faire un update() créer une erreur... def main() : App = Application() while App.exists != "fermee" : print("Des choses à faire...") #C'est ici qu'on affiche la fenêtre et écoute les évènements des widgets (si la fenêtre existe) if App.exists : App.update() print(App.exists) print("D'autre choses à faire...") sleep(0.5) # ralenti la réactivité des widgets... print("fin...") if __name__ == "__main__" : main()
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
19 nov. 2020 à 10:30
19 nov. 2020 à 10:30
Bonjour,
Super, tu peux marquer ton appel comme "résolu"
Super, tu peux marquer ton appel comme "résolu"