[TkInter] Vider éléments d'une Frame
thombou
Messages postés
195
Date d'inscription
Statut
Membre
Dernière intervention
-
gudu -
gudu -
Bonjour,
Je suis actuellement en train de coder une petite interface qui affiche le graph des données reçues par une carte d'acquisition. Le but est d'afficher les données quand on y est connectés et d'afficher un petit texte lorsque l'on se déconnecte. J'arrive à afficher le graph avec MatPlotLib, mais lorsque je me déconnecte je n'arrive pas à vider la Frame qui contient le graph... En fait je ne cherche pas nécessairement vider la Frame mais trouver un moyen pour remplacer le contenu de la classe Contenu, par le texte invitant à se connecter.
Voici mon code :
Voici par la même occasion le code de la classe Contenu :
L'informatique est un monde dont on a jamais fini de faire le tour.
Je suis actuellement en train de coder une petite interface qui affiche le graph des données reçues par une carte d'acquisition. Le but est d'afficher les données quand on y est connectés et d'afficher un petit texte lorsque l'on se déconnecte. J'arrive à afficher le graph avec MatPlotLib, mais lorsque je me déconnecte je n'arrive pas à vider la Frame qui contient le graph... En fait je ne cherche pas nécessairement vider la Frame mais trouver un moyen pour remplacer le contenu de la classe Contenu, par le texte invitant à se connecter.
Voici mon code :
class Interface(Frame): """Fenêtre principale, on y organise toute la fenetre principale, sans la connexion qui va se faire dans une autre fenêtre""" def __init__(self, fenetre, **kwargs): Frame.__init__(self, fenetre, **kwargs) self.pack(fill=BOTH, expand=True, padx=5, pady=5) self.parent = fenetre self.parent.title("Lidar - PIMS") # Zone de connexion self.frameConnexion= LabelFrame(self, text="Connexion") self.frameConnexion.pack(fill=X) self.texteBienvenue = Label(self.frameConnexion, text="Device IP adress: ") self.Ip1 = StringVar() self.bIp = Entry(self.frameConnexion, textvariable=self.Ip1, width=20) self.boutonConnexion = Button(self.frameConnexion, text="Connect", fg="green", command=self.Connexion) self.connexionState = Label(self.frameConnexion, text="Current state : Disconnected") self.texteBienvenue.pack(side=LEFT, padx=5, pady=5) self.bIp.pack(side=LEFT) self.boutonConnexion.pack(side=LEFT, padx=5,pady=5) self.connexionState.pack(side=RIGHT, padx=5, pady=5) self.connected = False # Zone du contenu self.frameContenu = Frame(self, borderwidth=1, relief=RAISED, width=600, height=600) # C'est cette Frame que je veux vider par la suite. self.frameContenu.pack(expand=True, fill=BOTH) self.messageContenuNonConnecte = Label(self.frameContenu, text="Please connect the device to have the spectrum") self.messageContenuNonConnecte.pack(padx=5, pady=5) # Zone du bas, pour quitter self.quitter = Button(self,text="Close", command=self.Fermer) self.quitter.pack(side="right", padx=5, pady=5) def Fermer(self): self.quit() self.parent.destroy() def Connexion(self): """Gère la connexion et la déconnexion à la RedPitaya(RP). C'est ici que sont définies les instances self.connected, self.driver et self.client""" self.ip = self.bIp.get() if self.connected == False: #On se connecte if re.search(r"^[0-9]{1,3}(.[0-9]{1,3}){3}$",self.ip) is None: print("test2") messagebox.showwarning("Connexion", "An error has occured because the IP adress syntax isn't correct") else: ### Connexion ### #self.client = connect(self.Ip, name='spectrum') #self.driver = Spectrum(self.client) self.boutonConnexion.config(text="Disconnect",fg="red") self.connexionState["text"]="Current state : connected to {}".format(self.ip) self.connected = True else: #on se déconnecte self.connexionState["text"]="Current state : disconnected" self.connected=False self.boutonConnexion.config(text="Connect",fg="green") self.UpdateContenuConnexion() # On met à jour le contenu de la fenêtre def UpdateContenuConnexion(self): """Mise à jour du contenu lors d'une connexion ou déconnexion""" if self.connected == True: self.messageContenuNonConnecte.pack_forget() self.graphique = Contenu(self.driver, self.frameContenu) self.graphique.TraceSpectrum([1, 2, 3, 4, 5], [12, 43, 59, 20, 2]) else: #Partie pour la déconnexion del self.graphique ## C'est ICI ## self.frameContenu.update() self.messageContenuNonConnecte.pack(padx=5, pady=5)
Voici par la même occasion le code de la classe Contenu :
class Contenu(Frame): def __init__(self, driver, frame): self.driver= driver self.frame = frame self.InitFrames() # Une fonction que je n'ai pas mise ici car elle ne fait que définir des frames, dont celle nommée frameSpectrum. def TraceSpectrum(self, x, spectrum): """Trace le spectre dans le widget défini lors de l'appel de la fonction (frame)""" self.f = Figure(figsize=(5,5), dpi=100) self.graph = self.f.add_subplot(111) self.graph.plot(x, spectrum) self.canvas = FigureCanvasTkAgg(self.f, self.frameSpectre) self.canvas.show() self.canvas.get_tk_widget().pack(side=BOTTOM, fill=BOTH, expand=True) toolbar = NavigationToolbar2TkAgg(self.canvas, self.frameSpectre) toolbar.update() self.canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=True)
L'informatique est un monde dont on a jamais fini de faire le tour.
A voir également:
- [TkInter] Vider éléments d'une Frame
- Photoshop elements gratuit - Télécharger - Retouche d'image
- Vider le cache d'une application - Guide
- Comment supprimer une page vide sur word - Guide
- Comment vider une clé usb - Guide
- Comment vider l'absorbeur d'encre canon pixma ✓ - Forum Imprimante