2013-06-09 22 views
13

Rozważmy prosty kod:tkinter separator TTK przyzwyczajenie wyświetlić

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() 

Kiedy uruchomić ten kod, separator jest prawie niewidoczny.
ttk separator not visible Zaznaczam go czerwoną strzałką, jeśli widzisz ją jako małą kropkę.

Jak ustawić separator na całej szerokości poziomej, a przynajmniej powinien być widoczny?

Odpowiedz

19

Separator ma naturalną szerokość 1 piksela. Powiedziałeś, żeby zarezerwować miejsce w pięciu kolumnach, ale nie poprosiłeś, aby separator faktycznie wypełnił te pięć kolumn. Aby rozwiązać ten problem, podaj atrybut sticky, który mówi: "jeśli w tym widżecie jest więcej miejsca niż potrzeba, ustaw krawędzie widgetu" przyklej "do określonych boków jego kontenera".

W tym przypadku chcesz, aby separator przykleił się do lewej i prawej krawędzi jego pojemnika. Lepkie atrybuty wykorzystuje punkty kompasu na wartości, więc chcesz „e” na Wschodzie, a „w” West:

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

dziękuję ... rozwiązano problem – oat

0

@sticky rozwiązania Bryana jest w porządku, ale to tylko rozwiązuje część sprawy, ponieważ separator nie pokryje całej szerokości poziomej (o którą prosiłeś). Oto alternatywne rozwiązanie, które można zastosować: Zamiast .grid(), należy użyć układu place() i mieć pełną kontrolę nad pozycją, szerokością (długością), a nawet wysokością separatora. Po prostu zastosować to w niniejszej sprawie (w/o żadnych dodatkowych funkcji) i pokrywa całą szerokość poziomego, tylko:

Wymień

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

z

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

Można Ustaw „y "jak chcesz. Zauważ, że orient=HORIZONTAL nie jest potrzebna, ponieważ jest to opcja domyślna. (Aby uzyskać szczegółowe informacje i przykłady korzystania z layoutu ".option()", należy zapoznać się z http://effbot.org/tkinterbook/place.htm).