在 tcl 中使用 WM WINDOWS 保持恒定 window 大小
Keeping a constant window size with WM WINDOWS in tcl
大家早上好,
我有一个 tcl/tk 应用程序,对于 windows 大小,我有以下代码:
wm title . "Relay Switch Application"
wm attributes . -alpha "1"
wm geometry . 1600x500+100+100
在 window 中,有 3 个标签框位于:
x1: 10
x2: 200
x3: 320
在我的电脑上,每个标签框并排放置,它们之间有大约 20 像素的间隙。
在我的工作笔记本电脑上,第二个标签框覆盖了第一个标签框。
如何更改或添加我的代码,以便 windows 内容能够针对任何屏幕分辨率正确定位?
提前谢谢你。
GUI 的一个事实是 windows 的绝对定位(在带有 place
的主 window 中或带有 wm geometry
的顶层)通常是馊主意。这是因为屏幕像素密度变化或字体宽度变化等小问题,但这只是您必须忍受的事情。相反,您应该编写您的应用程序以使用 Tk 的其他几何管理器,因为它们适应 OS 和用户共同提供给您的内容大小和总屏幕量 space。
例如,下面是如何将三个标签框与 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
如果您需要复杂的放置规则,例如在多个方向堆叠或使一个 window 的尺寸是另一个尺寸的倍数,您可能会使用 grid
,它是一个足够复杂的几何管理器,可以处理几乎所有您可以在普通 GUI 中想到的布局。这种情况相当简单:
# 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
大家早上好,
我有一个 tcl/tk 应用程序,对于 windows 大小,我有以下代码:
wm title . "Relay Switch Application"
wm attributes . -alpha "1"
wm geometry . 1600x500+100+100
在 window 中,有 3 个标签框位于:
x1: 10 x2: 200 x3: 320
在我的电脑上,每个标签框并排放置,它们之间有大约 20 像素的间隙。 在我的工作笔记本电脑上,第二个标签框覆盖了第一个标签框。
如何更改或添加我的代码,以便 windows 内容能够针对任何屏幕分辨率正确定位?
提前谢谢你。
GUI 的一个事实是 windows 的绝对定位(在带有 place
的主 window 中或带有 wm geometry
的顶层)通常是馊主意。这是因为屏幕像素密度变化或字体宽度变化等小问题,但这只是您必须忍受的事情。相反,您应该编写您的应用程序以使用 Tk 的其他几何管理器,因为它们适应 OS 和用户共同提供给您的内容大小和总屏幕量 space。
例如,下面是如何将三个标签框与 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
如果您需要复杂的放置规则,例如在多个方向堆叠或使一个 window 的尺寸是另一个尺寸的倍数,您可能会使用 grid
,它是一个足够复杂的几何管理器,可以处理几乎所有您可以在普通 GUI 中想到的布局。这种情况相当简单:
# 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