在 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