2013-06-09 3 views
13

Considerate questo semplice codice:tkinter wont visualizzare

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

Quando ho eseguito questo codice, il separatore è quasi invisibile.
ttk separator not visible
L'ho contrassegnato con una freccia rossa, se lo si può vedere come un piccolo puntino.

Come faccio a fare in modo che il separatore si estenda per l'intera larghezza orizzontale, o almeno sia visibile?

risposta

19

Il separatore ha una larghezza naturale di 1 pixel. Hai detto di riservare lo spazio su cinque colonne, ma non hai richiesto che il separatore riempisse effettivamente quelle cinque colonne. Per risolvere questo, fornire l'attributo sticky, che dice "se c'è più spazio del necessario per questo widget, rendere i bordi del widget" bastone "su lati specifici del suo contenitore".

In questo caso, si desidera che il separatore appiccichi ai bordi sinistro e destro del contenitore. Gli attributi appiccicose utilizza i punti cardinali per i valori, in modo che si desidera "e" per l'Est, e "w" per ovest:

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

grazie..solitato il problema – oat

0

@ soluzione di Bryan sticky va bene, ma si risolve solo una parte del caso, poiché il separatore non coprirà l'intera larghezza orizzontale (che hai chiesto). Ecco una soluzione alternativa che è possibile applicare: anziché .grid(), utilizzare il layout place() e avere il controllo completo della posizione, della larghezza (lunghezza) e persino dell'altezza del separatore. Per applicare proprio questa al caso di specie (w/o qualsiasi caratteristica in più) e coprire la dimensione orizzontale completa, basta:

Sostituire

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

con

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

È possibile impostare 'y ' come desidera. Si noti inoltre che orient=HORIZONTAL non è necessario poiché è l'opzione predefinita. (Controllare http://effbot.org/tkinterbook/place.htm per dettagli ed esempi sull'uso del layout `.option() ')