Menüeintrag nachträglich enablen

Fragen zu Tkinter.
Antworten
sedi
User
Beiträge: 104
Registriert: Sonntag 9. Dezember 2007, 19:22

Hallo,

mal wieder ne Tkinterfrage: Ich habe ein paar Menüs angelegt - einen Ausschnitt seht ihr hier:

Code: Alles auswählen

        # Eintrag 1 => Index 1?
        self.menu.datei.add_command(
            label=u"Öffnen...",
            command=self.controller.import_file)
        
        # Eintrag 2 => Index 2?
        self.menu.datei.add_command(
            label=u"Schließen",
            state=tk.DISABLED,
            command=self.controller.close_file)

        # Eintrag 3 => Index 3?
        self.menu.datei.add_separator()

        # Eintrag 4 => Index 4?
        self.menu.datei.add_command(
            label=u"Exportieren...",
            state=tk.DISABLED,
            command=self.controller.export_file)
Manche davon sind DISABLED, manche NORMAL - wie kann ich deren Status nachträglich wieder ändern?

Ich habe in den Dokumenten von NMT gefunden, dass man Änderungen am Menüeintrag nur über das Menü erreicht. Dazu muss man den Index (beginnend bei 1 und nicht wie bei Python üblich bei 0) des Eintrags verwenden und über die Methode ``entryconfig`` den Wert ändern - so glaubte ich - nur hat das damit nicht funktioniert:

Code: Alles auswählen

        self.menu.datei.entryconfigure(2, state=tk.NORMAL)
probiert allerdings ohne Erfolg :(
Ich erhalte die Fehlermeldung

Code: Alles auswählen

TclError: unknown option "-state"
CU sedi
----------------------------------------------------------
Python 3.5; Python 3.6
LinuxMint18
sedi
User
Beiträge: 104
Registriert: Sonntag 9. Dezember 2007, 19:22

Hab nun zahlreiche Versuche hinter mir und einen Treffer :)
Habe nur den Zaehler auf 1 gesetzt. Wahrscheinlich ist der erste Index doch 0 und nicht 1 - hmm - naja, jetzt hat es auf jeden Fall funktioniert!

Code: Alles auswählen

        # Index auf 1 setzen (Zaehlung doch bei 0?
        self.menu.datei.entryconfigure(1, state=tk.NORMAL)
Ob das allerdings der wahre Grund ist?

Beginnt die Zählung bei 0, dann hätte ich bei meiner ursprünglichen Wahl mit dem Index 2 den ``Separator`` erwischt und der hat sehr wahrscheinlich keine Option ``state``. Damit wäre zumindest die Fehlermeldung schlüssig...
CU sedi
----------------------------------------------------------
Python 3.5; Python 3.6
LinuxMint18
Antworten