正如标题所说,我想知道是否可以更改笔记本小部件标签的宽度?
我要做的是确保标签大小相等,即使有人调整大小,也要填充整个窗口宽度。目前看来是这样的:
但是我想这样:
[我通过在标签名称之前和之后添加空格来做到这一点]
第一个代码的相关代码是:
ttk::frame $fr.note.tab1
$fr.note add $fr.note.tab1 -text "Tab1" ;# For the second, it's " Tab1 "
ttk::frame $fr.note.tab2
$fr.note add $fr.note.tab2 -text "Tab2"
ttk::frame $fr.note.tab3
$fr.note add $fr.note.tab3 -text "Tab3"
我试图查看manual,但似乎只有小部件本身可以更改其大小(标签下方的区域)。
是否有可能指定选项卡的宽度或解决方法?我试过了:
$fr.note add $fr.note.tab1 -text "Tab1" -width 90
但是,当然,这引发了一个错误,说选项-width
是一个未知的选项(并且选项卡似乎不可配置,没有configure
命令。)
答案 0 :(得分:1)
稍后进行一些调查,似乎你不能因标签行布局引擎中的一些错误而烦恼。
似乎应该这样工作:
# An arbitrary value!
ttk::style configure Wider.TNotebook -mintabwidth 1000
$fr.note configure -style Wider.TNotebook
这样可以使整个空间的可用空间远远小于所需的空间,这样可以很好地分享内容。
除非没有。第一个选项卡会占用增加的空间,但会从其他未展开选项卡所占用的空间中窃取,而不是从其可能占用的剩余空间中窃取。我无法想象这种行为是有意的;这是一个错误。
答案 1 :(得分:0)
今天在文件classicTheme中的文件夹lib / tk8.6 / ttk中对源代码进行了一些窥探之后,我发现可以使用它来调整笔记本选项卡的大小:
ttk::style configure TNotebook.Tab -width 20
示例:
package require Tk ;# 8.6.4
ttk::notebook .note
set note .note
ttk::frame $note.tab1
$note add $note.tab1 -text "Tab 1"
ttk::frame $note.tab2
$note add $note.tab2 -text "Tab 2"
ttk::frame .note.tab3
$note add $note.tab3 -text "Tab 3"
pack $note -fill both -expand 1
set nw [winfo width .note]
set tc [llength [winfo children .note]]
ttk::style configure TNotebook.Tab -width [expr {$nw/6/$tc}]
ttk::style configure TNotebook.Tab -anchor center ;# To center tab label
以上给出:
然而,所有笔记都将继承相同的配置,但是如果窗口太小,标签将均匀调整大小:
在设置选项卡的宽度时,您可能会注意到我除以6,这是我在配置选项卡时winfo width
和-width
给出的值之间的因子差异(直接使用{{ 1}}否则会给出巨大的标签宽度。)
作为额外的,还可以将注释绑定到$nw/$tc
,以允许选项卡在窗口大小更改时自动调整大小以适应窗口:
<Configure>
我不完全确定这是否可以被视为良好做法,它对我有用^^