2013-07-05 2 views
2

Как использовать grid() для размещения виджета в нижней части окна? Например, этот код поместит эти метки друг под друга, но что, если я хочу переместить label_4 в нижнюю часть окна или ближе к нижней части, как это сделать?Как использовать сетку() python

label_1 = Label(text = 'Name 1').grid(row = 0, sticky = W) 
label_2 = Label(text = 'Name 2').grid(row = 1, sticky = W) 
label_3 = Label(text = 'Name 3').grid(row = 2, sticky = W) 
label_4 = Label(text = 'Name 4').grid(row = 3, sticky = W) 
+0

Обратите внимание, что '' grid' возвращает None', так что ваш код '' label_1' ... label_4' будет «Нет». Если вы хотите, чтобы переменная 'label' ссылалась на' Label', тогда вы должны вызвать 'label.grid' в качестве отдельного оператора. – unutbu

ответ

2

Если вы хотите использовать подвесную систему для этого, вы должны создать «спейсер» ячейки в системе сетки (пустой), который может динамически получить пространства слева от окна, и выталкивает последний ярлык внизу.

from Tkinter import * # or tkinter if you use Python3 

root = Tk() 

label_1 = Label(master=root, text='Name 1') 
label_2 = Label(master=root, text='Name 2') 
label_3 = Label(master=root, text='Name 3') 
label_4 = Label(master=root, text='Name 4') 

label_1.grid(row=0) 
label_2.grid(row=1) 
label_3.grid(row=2) # this is the 2nd 
label_4.grid(row=4) # this is the 4th 

root.rowconfigure(index=3, weight=1) # add weight to the 3rd! 
root.mainloop() 

Но для этого простого сценария, я думаю, вы должны использовать pack вместо grid:

from Tkinter import * # or tkinter if you use Python3 

root = Tk() 

label_1 = Label(master=root, text='Name 1') 
label_2 = Label(master=root, text='Name 2') 
label_3 = Label(master=root, text='Name 3') 
label_4 = Label(master=root, text='Name 4') 

label_1.pack() 
label_2.pack() 
label_3.pack() 
label_4.pack(side=BOTTOM) 

root.mainloop() 
+0

Вам не нужно на самом деле помещать что-то в эту прошивку; вы можете просто сделать «root.rowconfigure (3, weight = 1)», и эта строка займет весь слабину. –

+0

Несомненно, но в этом случае последняя метка не будет прилипать к основанию в фиксированном положении. Хотя ваша версия может быть полезна для OP, так как он спросил: * «в нижней части окна или ближе к основанию» *. Спасибо за ваше отражение. –

+0

Я думаю, вы неправильно поняли мои комментарии. Если вы поместите ярлык в строку ** 4 **, а затем настройте строку ** 3 ** (без ничего в ней), чтобы иметь положительный вес, метка в строке 4 _w_ будет придерживаться нижней. –

Смежные вопросы