[TkInter] Vider éléments d'une Frame
thombou
Messages postés
226
Statut
Membre
-
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
- Vider corbeille whatsapp - Forum Gmail