Графический интерфейс является фактом, что абсолютное позиционирование окон (либо в главном окне с place
, либо на верхнем уровне с wm geometry
) обычно является плохой идеей.Это происходит из-за таких мелочей, как изменение плотности пикселей на экране или изменение ширины шрифта и т. Д., Но с этим приходится мириться.Вместо этого вы должны написать свое приложение для использования других менеджеров геометрии Tk, так как они адаптируются к размеру контента и объему общего пространства экрана, которое ОС и пользователь намерены предоставить вам.
Например, воткак поставить три рамки рядом друг с другом с помощью pack
:
# Make some labelframes
labelframe .x1 -text "This is X1"
labelframe .x2 -text "This is X2"
labelframe .x3 -text "This is X3"
# Lay them out
pack .x1 .x2 .x3 -side left -fill both -expand yes
# You might want to experiment with the -padx and -pady options
Если вам нужны сложные правила размещения, такие как размещение в нескольких направлениях или создание одного окна, кратного размерус другой стороны, вы, вероятно, будете использовать grid
, который является достаточно сложным диспетчером геометрии, чтобы обрабатывать практически все макеты, которые вы можете представить в обычных графических интерфейсах.Это было бы довольно просто для этого случая:
# Put the labelframes in the grid…
grid .x1 .x2 .x3 -sticky nsew
# … and define how the system expands
grid columnconfigure {0 1 2} -weight 1
grid rowconfigure 0 -weight 1