Форум сайта python.su
4
Привет!
Пробую использовать tkinter
Возник такой вопрос:
почему в этой программе Label не прижимается к правому краю рамки fr,
import tkinter tk=tkinter.Tk() tk.geometry("500x500") fr=tkinter.Frame(tk,bg="red",width=400,height=100) fr.grid_propagate(0) fr.grid() lb=tkinter.Label(fr,text="111222333444") lb.grid(row=0,column=0,sticky="E")
Офлайн
72
Вы используете упаковщик grid(), который представляет сетку состоящую из строк и столбцов, отсчёт столбцов начинается слева на право, ширина столбца равна ширине максимального элемента, так как у вас всего лишь один элемент, то он занимает всю ширину столбца. Чтобы увидеть смещение элементов в разные стороны, нужны несколько элементов с шириной меньше чем ширина столбца.
В следующем примере жёлтая и синяя надписи находятся в одной ячейке с разных сторон:
import tkinter tk = tkinter.Tk() tk.geometry("500x500") fr=tkinter.Frame(tk,bg="red", width=400, height=100) fr.grid_propagate(0) fr.grid() lb1 = tkinter.Label(fr, bg='green', text="1234567890987654321") lb1.grid(row=0, column=0) #это самая большая надпись, определяет ширину столбца сетки lb2 = tkinter.Label(fr, bg='yellow', text="12345") lb2.grid(row=1, column=0, sticky="w") #эта надпись меньше ширины столбца, будет выравнена влево lb3 = tkinter.Label(fr, bg='blue', text="12345") lb3.grid(row=1, column=0, sticky="e") #эта надпись меньше ширины столбца, будет выравнена вправо tk.mainloop()
Офлайн
72
По умолчанию ширина столбца равна ширине максимального элемента, но её можно изменить (например, сделать равной ширине фрейма), тогда вы увидите выравнивание так, как вы хотели:
import tkinter tk=tkinter.Tk() tk.geometry("500x500") fr=tkinter.Frame(tk, bg="red", width=400, height=100) fr.grid_propagate(0) fr.grid() fr.columnconfigure(0, minsize=400) #задаём ширину столбца равную ширине фрейма lb=tkinter.Label(fr, bg='green', text="111222333444") lb.grid(row=0, column=0, sticky="E") #теперь видим выравнивание tk.mainloop()
Офлайн
4
А я думал, что столбец растягивается по ширине фрейма на котором расположен.
Поэтому и не понял в чём проблема.
Спасибо за подсказку.
Отредактировано panama555 (Июнь 28, 2019 11:27:47)
Офлайн