使用tcl

时间:2018-09-19 09:17:21

标签: tcl tk

早上好

我有一个tcl / tk应用程序,对于Windows大小,我有以下代码:

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

在窗口中,有3个标签框位于:

  

x1:10   x2:200   x3:320

在我的PC上,每个标签框并排放置,它们之间有大约20个像素的间隙。 在我的笔记本电脑上,第二个标签框架重叠在第一个标签框架上。

如何更改或添加代码,以便无论屏幕分辨率如何正确放置Windows内容?

先谢谢您。

enter image description here

1 个答案:

答案 0 :(得分:1)

GUI的事实是,绝对定位窗口(在带有place的主窗口中或位于带有wm geometry的顶级窗口中)通常是个坏主意。这是因为屏幕像素密度变化或字体宽度变化等小问题,但这只是您必须忍受的。相反,您应该编写应用程序以使用Tk的其他几何图形管理器,因为这些图形管理器会适应内容的大小以及OS和用户共同为您提供的总体屏幕空间的大小。

例如,下面是如何与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,这是一个几何管理器,它足够复杂,足以处理普通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