gpt4 book ai didi

css - 如何在 tcl tk GUI 中通过调整窗口大小来调整窗口内的框架、标签、文本等小部件的大小

转载 作者:行者123 更新时间:2023-11-28 03:02:40 24 4
gpt4 key购买 nike

我是 tcl\tk 的新手,我正在使用它开发一个 UI。 UI 窗口有一个框架,该框架具有根据表格中的列数填充的动态数量的标签和文本小部件。每列都有一个条目小部件,用户在其中键入的数据会填充表格中的每一列。

但是我面临的问题是,我无法找到一种方法让窗口中框架内的小部件的大小和位置根据窗口的大小自行调整。也就是说,如果用户通过拖动和放大窗口的大小来放大窗口,窗口内的小部件也应该增加大小并根据窗口大小调整它们的位置。如果窗口大小 id 减小,反之亦然。类似于 HTML、CSS 中的 Bootstrap 。任何人都可以给我任何想法吗?任何帮助是极大的赞赏。谢谢!

最佳答案

您需要阅读关于 grid 的文档和 pack命令。

pack , -fill-expand选项将帮助您调整小部件对调整大小使用react。

例子:

pack .widget -fill both -expand true
pack .widget -fill x -expand true -anchor s

grid , -sticky选项和 columnconfigurerowconfigure子命令将对您有用。

例子:

grid .widget -sticky ew
grid columnconfigure . 0 -weight 1

在某些情况下,您可能需要在调整大小时采取特殊操作。在这种情况下,bind命令会有用。您可以绑定(bind)到 <Configure>事件并调整小部件大小或根据需要采取其他操作。

编辑:

grid columnconfigure适用于包含框架的列。所以你不必为每个小部件运行它。在上面的示例中,.widget包含在 . 中框架和 .框架的列已配置。

# in this example, the entry fields will adjust their width when
# the window is resized.
package require Tk
grid columnconfigure . 1 -weight 1
foreach {val} {1 2 3 4 5 6 7} {
ttk::label .lab$val -text "Label $val:"
ttk::entry .entry$val -textvariable mydata($val)
grid .lab$val .entry$val -in . -sticky w
# change the configuration for .entry$val only...
grid configure .entry$val -sticky ew
}

proc doresize { win } {
puts "Win $win now has width: [winfo width $win]"
}

bind . <Configure> [list ::doresize %W]

注意在这个例子中,bind也适用于 . 的所有 child 作为.是顶级窗口。如果您只对 . 的更改感兴趣,您可以更改调整大小的过程:

proc doresize { win } {
if { $win eq "." } {
puts "Win $win now has width: [winfo width $win]"
}
}

如果bind应用于非顶级窗口的框架或小部件,则仅接收该框架或小部件的事件。

另请注意,您将收到所有 事件。可以进行进一步的更改以检查宽度的变化:

set vars(last.width) 0

proc doresize { win } {
variable vars

if { $win eq "." } {
set newwidth [winfo width $win]
if { $newwidth != $vars(last.width) } {
puts "Win $win now has width: [winfo width $win]"
if { $vars(last.width) != 0 } {
# this is not the first time, as last.width is not zero
# do something due to window resize.
}
set vars(last.width) $newwidth
}
}
}

引用文献:grid , pack , bind

关于css - 如何在 tcl tk GUI 中通过调整窗口大小来调整窗口内的框架、标签、文本等小部件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46124953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com