Seite 1 von 1

Menueleiste erscheint nicht

Verfasst: Dienstag 6. Juni 2006, 13:16
von Andy
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!

Verfasst: Donnerstag 8. Juni 2006, 22:25
von wuf
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:

Dankeschön

Verfasst: Samstag 10. Juni 2006, 09:47
von Andy
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