2013-06-09 13 views
13

diesen einfachen Code Bedenken Sie:tkinter ttk Separator Anzeige wird nicht

from Tkinter import * 
import ttk 
root= Tk() 
ttk.Label(root, text='Heading Here').grid(row=1, column=1) 
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5) 
root.mainloop() 

Wenn ich diesen Code ausführen, der Separator fast unsichtbar ist.
ttk separator not visible
Ich habe es mit einem roten Pfeil markiert, wenn Sie es als ein kleines Punkt-Ding sehen können.

Wie mache ich den Separator über die gesamte horizontale Breite oder zumindest sichtbar?

Antwort

19

Der Separator hat eine natürliche Breite von 1 Pixel. Sie haben ihm gesagt, dass Sie den Platz in fünf Spalten reservieren sollen, aber Sie haben nicht angefordert, dass das Trennzeichen diese fünf Spalten tatsächlich füllt. Um dies zu lösen, geben Sie das Attribut sticky an, das besagt: "Wenn mehr Platz als für dieses Widget benötigt wird, können Sie die Kanten des Widgets an bestimmte Seiten seines Containers" hängen ".

In diesem Fall soll der Separator am linken und rechten Rand des Containers kleben. Die klebrigen Eigenschaften, die Punkte des Kompasses für Werte verwendet, so dass Sie wollen „e“ für Osten und „w“ für Westen:

ttk.Separator(...).grid(..., sticky="ew") 
+0

danke. Das Problem gelöst – oat

0

@ Bryans sticky Lösung ist in Ordnung, aber es löst nur einen Teil des Gehäuses, da der Separator nicht die gesamte horizontale Breite (die Sie verlangten) abdeckt. Hier ist eine alternative Lösung, die Sie anwenden können: Anstelle von .grid(), verwenden Sie place() Layout und haben die volle Kontrolle über die Position, die Breite (Länge) und sogar die Höhe des Separators. Zur Anwendung nur diese auf den vorliegenden Fall (w/o jede zusätzliche Funktion) und deckt die gesamte horizontale Breite, gerade:

ersetzen
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5) 

mit

ttk.Separator(root).place(x=0, y=26, relwidth=1) 

Sie können ‚gesetzt y ' wie es Dir gefällt. Beachten Sie auch, dass orient=HORIZONTAL nicht benötigt wird, da dies die Standardoption ist. (Überprüfen Sie http://effbot.org/tkinterbook/place.htm für Details und Beispiele für die Verwendung von `. Option() 'Layout.)