Menueleiste erscheint nicht

Fragen zu Tkinter.
Antworten
Andy
User
Beiträge: 196
Registriert: Sonntag 1. Januar 2006, 20:12
Wohnort: aus dem hohen Norden....

Hallo Leute,

hab mal wieder ein Prob. mit dem ich mich seit´ner halben Woche beschäftige.

Irgendwie bekomme ich die Menüleiste nicht im Tkinter-Menü angezeigt:

Code: Alles auswählen

# -*- coding: cp1252 -*-
from Tkinter import *
import tkMessageBox

class Hauptfenster:
    def __init__ (self):
        self.fenster=Tk()
        self.fenster.title('Test')
        self.__addMenueleiste()
        self.__addDateimenue()
        self.fenster.mainloop()

    def __addMenueleiste(self):
        self.menueleiste=Menu(self.fenster)
        self.fenster.configure (menu=self.menueleiste)

        
    def __addDateimenue(self):
        self.dateimenue=Menu(master=self.menueleiste)
        self.dateimenue.add_separator()
        self.dateimenue.add_command(label="Info",
                                    command = self.info)
        self.dateimenue.add_command(label='Ende',
                                    command=self.beenden)

    def info (self):
        if tkMessageBox.showinfo ('Info',
                                  'Hier gehört ein Infotext rein!'):
            self.fenster.mainloop()


    def beenden (self):
        if tkMessageBox.askyesno('Beenden',
                                 'Wollen Sie wirklich das Programm beenden?'):
            self.fenster.destroy()


hauptfenster = Hauptfenster()
Es kommt auch keine Fehlermeldung. Ich verzweifle langsam :roll:
dank schonmal!
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Andy

Du hast nur ein Submenue programmiert! Dieses muss aber
noch einem Hauptmenue in der Menueleiste hinzugefügt werden.
Ich habe hier im Skript noch ein Hauptmenu 'Datei' hinzugefügt.
So funktioniert es. In der Methode 'Info' habe ich noch self.fenster.mainloop()
durch pass ersetzt da self.fenster.mainloop() schon in der
Methode __init__ gestartet wurde.

Code: Alles auswählen

# -*- coding: cp1252 -*- 
from Tkinter import * 
import tkMessageBox 

class Hauptfenster: 
    def __init__ (self): 
        self.fenster=Tk() 
        self.fenster.title('Test') 
        self.__addMenueleiste() 
        self.__addDateimenue()
        self.__addMainMenue()
        self.fenster.mainloop() 

    def __addMenueleiste(self): 
        self.menueleiste=Menu(self.fenster)
        self.fenster.configure (menu=self.menueleiste) 

    def __addDateimenue(self): 
        self.dateimenue=Menu(master=self.menueleiste) 
        self.dateimenue.add_separator() 
        self.dateimenue.add_command(label="Info", 
                                    command = self.info) 
        self.dateimenue.add_command(label='Ende', 
                                    command=self.beenden) 

    def __addMainMenue(self):
        self.menueleiste.add_cascade(label='Datei',menu=self.dateimenue)

    def info (self): 
        if tkMessageBox.showinfo ('Info','Hier gehört ein Infotext rein!'):
             pass

    def beenden (self): 
        if tkMessageBox.askyesno('Beenden', 
                                 'Wollen Sie wirklich das Programm beenden?'): 
            self.fenster.destroy() 

hauptfenster = Hauptfenster()
Gruss wuf :wink:
Take it easy Mates!
Andy
User
Beiträge: 196
Registriert: Sonntag 1. Januar 2006, 20:12
Wohnort: aus dem hohen Norden....

Hi Wuf,

dankeschön erstmal.

Auf pass wär ich nu gar nicht gekommen.
Viel mehr kümmert mich, dass ich dieses Beispiel aus einem Buch
hatte. (OOP!):? Grrr

Naja, auch Autoren können irren.

Gruss Andy
Antworten