是否可以更改笔记本标签的宽度?

时间:2014-01-04 08:16:14

标签: tcl tk ttk

正如标题所说,我想知道是否可以更改笔记本小部件标签的宽度?

我要做的是确保标签大小相等,即使有人调整大小,也要填充整个窗口宽度。目前看来是这样的:

enter image description here

但是我想这样:

enter image description here

[我通过在标签名称之前和之后添加空格来做到这一点]

第一个代码的相关代码是:

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命令。)

2 个答案:

答案 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

以上给出:

enter image description here

然而,所有笔记都将继承相同的配置,但是如果窗口太小,标签将均匀调整大小:

enter image description here

在设置选项卡的宽度时,您可能会注意到我除以6,这是我在配置选项卡时winfo width-width给出的值之间的因子差异(直接使用{{ 1}}否则会给出巨大的标签宽度。)

作为额外的,还可以将注释绑定到$nw/$tc,以允许选项卡在窗口大小更改时自动调整大小以适应窗口:

<Configure>

我不完全确定这是否可以被视为良好做法,它对我有用^^

相关问题