TKinter Menü

Fragen zu Tkinter.
abgdf

Freitag 5. Dezember 2008, 19:39

Richtig ist, ich bin immer noch bei Python 2.4, SuSE 10.0 und einem Rechner von 2003. Da ich nicht neue 3D-Spiele zocke, geht das recht gut.
Alle Features auf der Seite sind von mir getestet und funktionieren in 2.4. Da ich schon denke, daß sich die Python-Programmierer auch um Abwärtskompatibilität bemühen, funktioniert das, was auf meiner Seite steht, immer noch. Man könnte heute das eine oder andere vielleicht etwas moderner machen, insgesamt abraten muß man aber nicht.

Gruß
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 5. Dezember 2008, 20:57

abgdf hat geschrieben:Man könnte heute das eine oder andere vielleicht etwas moderner machen, insgesamt abraten muß man aber nicht.
Klar, Deprecation warnings und schwerere Migration auf neuere Releases die sowas gar nicht mehr haben ist toll. Auch der zusätzliche unnötige Speicherverbrauch ist sicher sinnvoll. Also ehrlich, direkt über Dateien zu iterieren geht schon seit Ewigkeiten. ``readlines()`` hat schon unter 2.4 niemand mehr genutzt.

Außerdem bekommen die Kommentare alle zu hören die dann die Anleitung lesen und ihren Code dann irgendwo posten. Warum es also nicht gleich in der Dokumentation an der Zentralen Stelle aktuell halten statt den Leuten Dinge zu vermitteln die sie dann später sowieso anders machen werden so dass das alte Wissen keinen Wert hat? Zudem ich ja durchaus schon viele Stellen angesprochen habe so dass du dir nichtmal die Arbeit machen musst selbst nach den Dingen zu suchen die outdated sind.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Blanka
User
Beiträge: 1
Registriert: Dienstag 24. Februar 2009, 14:28

Dienstag 24. Februar 2009, 14:42

Ich habe ein kleines Problem mit einem Menu, das ich für ein Programm benötige:

Code: Alles auswählen

#Menu
menubar=Tkinter.Menu(tk)
dateiMenu=Tkinter.Menu(menubar)
arbeitMenu=Tkinter.Menu(menubar)
hilfeMenu=Tkinter.Menu(menubar)
dateiMenu.config(bg="#FFEC8B")
arbeitMenu.config(bg="#FFEC8B")
hilfeMenu.config(bg="#FFEC8B")
dateiMenu.add_command(label="Neues Projekt",command=bla)
dateiMenu.add_command(label="Projekt oeffnen", command=bla)
dateiMenu.add_command(label="Projekt speichern", command=bla)
dateiMenu.add_command(label="Rangliste drucken", command=bla)
dateiMenu.add_command(label="Projekt schliessen", command=bla)
arbeitMenu.add_command(label="Station erstellen", command=bla)
arbeitMenu.add_command(label="Station einlesen", command=bla)
arbeitMenu.add_command(label="Aenderungen", command=bla)
hilfeMenu.add_command(label="Hilfe", command=bla)
menubar.add_cascade(label="Datei", underline=0,menu=dateiMenu)
menubar.add_cascade(label="Bearbeiten",underline=0,menu=arbeitMenu)
menubar.add_cascade(label="Hilfe", underline=0,menu=hilfeMenu)
tk.configure(menu=menubar)
Mein Problem ist nun, dass einfach ein Separator hinzugefügt wird, den ich ja aber gar nicht einfüge... Warum und wie kriege ich den weg?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dienstag 24. Februar 2009, 15:12

Blanka hat geschrieben:Ich habe ein kleines Problem mit einem Menu, das ich für ein Programm benötige:
Hallo Blanka, willkommen im Forum!

Positiv ist, dass du die Code-Tags gleich entdeckt hast ... :wink:

Empfehlung für künftige Postings:
Entweder lauffähigen Code posten (das wäre in diesem Fall das beste, damit man sich ansehen kann, was du unter Separatoren verstehst - es sind nämlich keine ...) oder Snippets, die so sind, dass man sich nicht den Rest erraten muss, um lauffähigen Code daraus zu machen (was ist z.B. tk ?).

Und: Bei älteren Threads wie diesem ist es meist besser, einen neuen zu eröffnen, weil man sich ansonsten möglicherweise völlig umsonst den ganzen Thread nochmal ansieht, um am Ende festzustellen, dass das überflüssig war.

Jetzt aber die Lösung: Was dich stört sind keine Separatoren (die müsste man nämlich ausdrücklich hinzufügen), sondern die sog. Abreißleiste. Das ist ein besonderes Feature. Wenn du darauf klickst, kannst du das Menü abreißen und als eigenständiges Fenster herumschieben.
Wenn du das nicht willst, musst du bei der Erzeugung den Schlüsselwortparameter "tearoff=False" setzen - dann ist die Abreißleiste weg:

Code: Alles auswählen

dateimenu = Tkinter.Menu(menubar, tearoff=False)
Im übrigen könnte dein Code auch noch stylistische Verbesserungen vertragen. "PEP 8" ist hier das Stichwort.
Antworten