Tkinter für Windows unvollständig?

Fragen zu Tkinter.
Antworten
Peter Gerlach
User
Beiträge: 24
Registriert: Donnerstag 14. Februar 2008, 18:16

Hallo Freunde, ich habe heute mal eine recht seltsam klingende Frage. Aufgefallen ist mir das Problem, weil ich kleine Programme unter Linux (Lenny) entwickle und diese dann unter WinXP ausführe. Hat bisher auch immer recht gut geklappt, von kleinen geometrischen Anpassungen mal abgesehen. Nun ist mir eine kleine Überraschung begegnet. Ich wollte die Menueleiste etwas hervorheben, weil sie mir so flach aussah, mit den Optionen relief und fg. Unter Linux trat der erwartete Effekt ein, bei WinXP blieb sie einfach ungefärbt und flach. Hier mal mein Auszug aus dem Code:

Code: Alles auswählen

bar = Menu(root, relief = 'sunken', bd = 4, bg = 'yellow')

mleiste = Menu(bar)
mleiste.add_command(label='alle Views öffnen', command=alleViews)
mleiste.add_command(label='Views schließen', command=Viewsoff)

bar.add_command(label='Exit', command=ende)
bar.add_cascade(label='Views', menu=mleiste)
bar.add_command(label='Info', command=about)

root.config(menu=bar)
Ich habe unter Linux Python 2.5 und unter Windows Python 2.6
Im Tkinter-Quelltext (sowohl unter Linux als auch unter Windows) sind die Optionen relief und fg als zulässig aufgeführt

Es wäre schön, wenn jemand mein Rätselraten beenden könnte. Die Suchfunktion hat mir auch nicht geholfen, weder hier noch bei Google.

Peter
Peter Gerlach
User
Beiträge: 24
Registriert: Donnerstag 14. Februar 2008, 18:16

.. da bisher keine Antwort kam halte ich es für gut möglich, dass es sich hierbei um einen Fehler in der Windows- Implementierung von Tk/Tcl handelt und Tkinter völlig schuldlos ist ...
Ich habe es jetzt mal mit Python 2.7rc1 probiert, aber es ist da genau so.

PGe.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Peter Gerlach

Habe hier noch dein Skript vervollständigt damit es auch ausgeführt werden kann ohne eigene Editierarbeiten aufzuwenden:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from Tkinter import*

def alleViews():
    print 'allViews'

def Viewsoff():
    print 'Viewsoff'

def ende():
    print 'Ende'

def about():
    print 'about'

root = Tk()

bar = Menu(root, relief = 'sunken', bd = 4, bg = 'yellow')

mleiste = Menu(bar)
mleiste.add_command(label='alle Views öffnen', command=alleViews)
mleiste.add_command(label='Views schließen', command=Viewsoff)

bar.add_command(label='Exit', command=ende)
bar.add_cascade(label='Views', menu=mleiste)
bar.add_command(label='Info', command=about)

root.config(menu=bar)

root.mainloop()
Bei Windows ist es vermutlich der Window-Manager der fremde Menu-Eigenschaften nicht zulässt, da sich B.Gat... sich nicht in seine Windows-Philosophie reinpfuschen lässt.

Gruß wuf :wink:
Take it easy Mates!
Peter Gerlach
User
Beiträge: 24
Registriert: Donnerstag 14. Februar 2008, 18:16

Danke, Wuf. Du hast mir neue Kraft gegeben davon überzeugt zu sein, dass Python selbst, wie immer, sauber ist. :-)

PGe.
Peter Gerlach
User
Beiträge: 24
Registriert: Donnerstag 14. Februar 2008, 18:16

Nachtrag für Wuf:

ich habe mal mein altes Delphi rausgekramt und siehe da, im Eigenschafteneditor gibt es auch dort für das Menue-Control unter Windows keine Verstellmöglichkeiten zu Hintergrundfarbe und Relief. Deine Vermutung ist also wohl der absolute Volltreffer.

PGe.
Antworten