Seite 1 von 1

Ein Label im Frame vom Menu ansprechen

Verfasst: Montag 20. Dezember 2021, 11:49
von WvonRiedi
Ich möchte gerne vom Menu ein Label im Frame ansprechen. Leider hatten alle meine Versuche keinen Erfolg

Code: Alles auswählen

import tkinter as tk
from tkinter import ttk,Button, Tk,Entry, END,Label

class HauptFenster(tk.Tk): 
    def __init__(self):
        super().__init__()
        
         # ------------- Label löschen --------------------------------------------------
        def labellöschen():
            self.name_label.grid_forget(self, container)
        
        menuleiste = tk.Menu(self)
        
        datei_Sonstiges = tk.Menu(menuleiste, tearoff=0)
        datei_Sonstiges.add_command(label="Label löschen", command=labellöschen)#, Labellöschen
        
        menuleiste.add_cascade(label="Sonstiges", menu=datei_Sonstiges)

        self.config(menu=menuleiste)
        EingabeFrame(self).pack()

class EingabeFrame(ttk.Frame):  

    def __init__(self, container):
        super().__init__(container)
        
        def löschen():
            # Label löschen 
            self.name_label.grid_forget()       
        
        self.löschen_button = ttk.Button(self, text="Label löschen", command=löschen)
        self.löschen_button.grid(column=0, row=8,  sticky="W",pady="10")
        
        self.name_label = ttk.Label(self, text="Diesen Text löschen" ,background="red", foreground ="white",font=("Helvetica", 16))
        self.name_label.grid(column=0, row=9,columnspan=2,  sticky="W",pady="10")
        
fenster = HauptFenster() #

fenster.mainloop()

Danke für eine Tipp
Werner

Re: Ein Label im Frame vom Menu ansprechen

Verfasst: Montag 20. Dezember 2021, 11:58
von Sirius3
Man definiert keine Funktionen innerhalb von Methoden, dazu sind doch Methode da.
Um etwas aus dem HauptFenster heraus mit dem Eingabeframe machen zu können, muß das Hauptfenster auch das Eingabeframe kennen.

Code: Alles auswählen

import tkinter as tk
from tkinter import ttk

class HauptFenster(tk.Tk): 
    def __init__(self):
        super().__init__()
        
        self.eingabeframe = EingabeFrame(self)
        self.eingabeframe.pack()
        
        menuleiste = tk.Menu(self)
        datei_Sonstiges = tk.Menu(menuleiste, tearoff=0)
        datei_Sonstiges.add_command(label="Label löschen", command=self.eingabeframe.labellöschen)
        menuleiste.add_cascade(label="Sonstiges", menu=datei_Sonstiges)
        self.config(menu=menuleiste)

class EingabeFrame(ttk.Frame):  

    def __init__(self, container):
        super().__init__(container)
        
        self.löschen_button = ttk.Button(self, text="Label löschen", command=self.labellöschen)
        self.löschen_button.grid(column=0, row=8,  sticky="W",pady="10")
        
        self.name_label = ttk.Label(self, text="Diesen Text löschen" ,background="red", foreground ="white",font=("Helvetica", 16))
        self.name_label.grid(column=0, row=9,columnspan=2,  sticky="W",pady="10")

    def labellöschen(self):
        self.name_label.grid_forget()       
        

def main():
    fenster = HauptFenster()
    fenster.mainloop()

if __name__ == "__main__":
    main()

Re: Ein Label im Frame vom Menu ansprechen

Verfasst: Dienstag 21. Dezember 2021, 11:20
von WvonRiedi
Danke für die Antwort.

Wenn ich am Schluss des Codes

def main():
fenster = HauptFenster()
fenster.mainloop()

if __name__ == "__main__":
main()

Kann ich den Code nicht Direkt von Desktop (Windows10) starten.
Ich starte das Programm mit:

"C:\Users\Wvr\PhytonDateien\label.py"

Gruss Werner

Re: Ein Label im Frame vom Menu ansprechen

Verfasst: Dienstag 21. Dezember 2021, 15:12
von __blackjack__
@WvonRiedi: Und warum kannst Du das nicht?

Re: Ein Label im Frame vom Menu ansprechen

Verfasst: Donnerstag 23. Dezember 2021, 21:56
von WvonRiedi
Das ist mir auch ein Rätsel. Das Programm startet nicht :( .
Mit :
fenster = HauptFenster()
fenster.mainloop()
am Schluss des Code startet das Programm.

Wenn ich den Code mit Jupyter Notebook starte geht's auch mit

def main():
..................

Re: Ein Label im Frame vom Menu ansprechen

Verfasst: Freitag 24. Dezember 2021, 01:03
von __deets__
Wie startest du das denn? In der Konsole? Oder einer IDE wie IDLE?

Re: Ein Label im Frame vom Menu ansprechen

Verfasst: Samstag 25. Dezember 2021, 12:25
von WvonRiedi
Weis jetzt nicht was Du meinst.
Ich habe unter "Standart-Apps nach Dateityp auswählen" bei der Endung py "Python 3.9" angegeben.
Danach mache ich ein Link auf dem Desktop auf die *label.py* Datei. Mit einem Doppelklick auf den Link erscheint das Fenster.