Seite 1 von 1

Tkinter für Windows unvollständig?

Verfasst: Sonntag 23. Mai 2010, 15:15
von Peter Gerlach
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

Re: Tkinter für Windows unvollständig?

Verfasst: Montag 7. Juni 2010, 10:44
von Peter Gerlach
.. 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.

Re: Tkinter für Windows unvollständig?

Verfasst: Montag 7. Juni 2010, 11:28
von wuf
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:

Re: Tkinter für Windows unvollständig?

Verfasst: Montag 7. Juni 2010, 14:39
von Peter Gerlach
Danke, Wuf. Du hast mir neue Kraft gegeben davon überzeugt zu sein, dass Python selbst, wie immer, sauber ist. :-)

PGe.

Re: Tkinter für Windows unvollständig?

Verfasst: Samstag 12. Juni 2010, 13:01
von Peter Gerlach
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.