Сохранение постоянного размера окна с помощью WM WINDOWS в tcl - PullRequest
0 голосов
/ 19 сентября 2018

Утро всем,

У меня есть приложение tcl / tk, и для размера окна у меня есть следующий код:

wm title . "Relay Switch Application"
wm attributes . -alpha "1" 
wm geometry . 1600x500+100+100

Внутри окна есть 3 рамки для меток, расположенные по адресу:

x1: 10 x2: 200 x3: 320

На моем ПК каждый фрейм меток расположен рядом с промежутками около 20 пикселей между ними.На моем рабочем ноутбуке второй меточный кадр перекрывает первый.

Как мне изменить или добавить мой код, чтобы содержимое окон было правильно настроено для любого разрешения экрана?

Спасибоавансовый.

enter image description here

1 Ответ

0 голосов
/ 19 сентября 2018

Графический интерфейс является фактом, что абсолютное позиционирование окон (либо в главном окне с 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
...