Tcl/Tk:限制调整`text`小部件的大小

问题描述 投票:0回答:1

我对限制调整

text
Tk
小部件的大小有疑问。我有以下代码,其中两个
text
小部件彼此排列在一起。问题是当我调整包含“Box2”的文本小部件的大小时,它就会消失,如下图所示。

我想调整大小,以便也可以看到“Box2”。如果在调整大小的某个阶段无法显示“Box2”,则应禁止调整为较小的尺寸(但应允许调整为较大的尺寸)。

正常尺寸

This the normal sized one

调整大小

Here

重现问题的代码是:

#----------------------------------------------
# scrolled_text from Brent Welch's book
#----------------------------------------------
proc scrolled_text { f args } {
    frame $f
    eval {text $f.text -wrap none \
        -xscrollcommand [list $f.xscroll set] \
        -yscrollcommand [list $f.yscroll set]} $args
    scrollbar $f.xscroll -orient horizontal \
        -command [list $f.text xview]
    scrollbar $f.yscroll -orient vertical \
        -command [list $f.text yview]
    grid $f.text $f.yscroll -sticky news
    grid $f.xscroll -sticky news
    grid rowconfigure $f 0 -weight 1
    grid columnconfigure $f 0 -weight 1
    return $f.text
}


proc horiz_scrolled_text { f args } {
    frame $f
    eval {text $f.text -wrap none \
        -xscrollcommand [list $f.xscroll set] } $args
    scrollbar $f.xscroll -orient horizontal -command [list $f.text xview]
    grid $f.text -sticky news
    grid $f.xscroll -sticky news
    grid rowconfigure $f 0 -weight 1
    grid columnconfigure $f 0 -weight 1 
    return $f.text
}
set st1 [scrolled_text .t1 -width 40 -height 10]
set st2 [horiz_scrolled_text .t2 -width 40 -height 2]

pack .t1 -side top -fill both -expand true
pack .t2 -side top -fill x 

$st1 insert end "Box1"
$st2 insert end "Box2"
text tcl widget tk-toolkit
1个回答
1
投票

按照 schlenk 作品的建议,使用

grid
而不是
pack

set st1 [scrolled_text .t1 -width 80 -height 40]
set st2 [horiz_scrolled_text .t2 -width 80 -height 2]

grid .t1 -sticky news
grid .t2 -sticky news

# row 0 - t1; row 1 - t2
grid rowconfigure . 0 -weight 10  -minsize 5
grid rowconfigure . 1 -weight 2   -minsize 1
grid columnconfigure . 0 -weight 1

$st1 insert end "Box1"
$st2 insert end "Box2"

这里的键是

rowconfigure
,权重已分配给它。我根据
10
值将
.t1
分配给
2
,将
.t2
分配给
height
。我还将
minsize
设置为
5
1
,这样我们就不会将窗口缩小到超过某个最小值。

columnconfigure
weight
设置为
1
,因为如果我们尝试水平调整大小,窗口应该扩展并填充,而不是留下空白空间。

© www.soinside.com 2019 - 2024. All rights reserved.