【问题标题】:Border lines between labels tcl tk标签之间的边界线 tcl tk
【发布时间】:2014-08-23 00:08:47
【问题描述】:

我有一个 GUI,它有几个复选按钮和旁边显示的复选按钮的信息。信息来自一系列列表。数组中的每个元素都有与其相关联的多个信息类别。我想把这些信息放在一个易于查看的 GUI 中。目前 GUI 有以下代码。按钮现在没有功能,稍后会出现,但我想弄清楚的是如何在每个类别之间添加边框线,基本上让整个东西看起来更像一个表格:

set tics(ticket1) [list "status1" "ec1"]
set tics(ticket2) [list "status2" "ec2"]
set tics(ticket3) [list "status3" "ec3"]
set cv [canvas .cs  -yscrollcommand [list .sy set]]
set intro [frame $cv.intro]
set lab [label $intro.lab -text "Please click block"]
wm title . "Warning!"
set frame [frame $cv.frame ]
set l1 [label $frame.l1 -text "Block"  -padx $padding]
set l2 [label $frame.l2 -text "Status"  -padx $padding]
set l3 [label $frame.l3 -text "Effort Category" -padx $padding]
set sy [scrollbar .sy -orient v -command [list $cv yview]] 
    pack $cv -expand 1 -fill both -side left 
pack $intro $lab
pack $sy -side right -fill y
grid $l1 -row 0 -column 0 -ipadx $padding -sticky $stickiness 
grid $l2 -row 0 -column 1 -ipadx $padding -sticky $stickiness 
grid $l3 -row 0 -column 2 -ipadx $padding -sticky $stickiness 

set row 1
foreach tic [array names tics] {
        set a [checkbutton $frame.f$tic -text $tic]
    set c 0
    foreach element $tics($tic) {
        set t$c [label $frame.l$tic$c -text $element -padx $padding]
        set c [expr $c+1]
    }   
    grid $a -row $row -column 0 -ipadx $padding -sticky $stickiness
    grid $t0 -row $row -column 1 -ipadx $padding -sticky $stickiness
    grid $t1 -row $row -column 2 -ipadx $padding -sticky $stickiness

    set row [expr $row+1]
}
pack $frame

【问题讨论】:

  • 您能否提供一下您希望这些“边界线”看起来如何的视觉效果?
  • 您应该考虑使用incr rowrow 的值增加一...

标签: user-interface tcl border tk


【解决方案1】:

对于完整的表格效果,使用tktable extension package。它是为它设计的。

或者,您可以使用ttk::separator 创建分隔小部件;除了将自己画成一条水平线或垂直线(根据您配置它们的方式)之外,它们什么都不做。尝试做这样的事情:

button .b1 -text "This is b1"
button .b2 -text "This is b2"
button .b3 -text "This is b3"
button .b4 -text "This is b4"
ttk::separator .s1
ttk::separator .s2

# Basic grid, in pattern style
grid .b1 .s1 .b2
grid .s2  -   -    -sticky ew
grid .b3  x  .b4
# Note that we're *forcing* separator widgets to overlap!
grid configure .s1 -rowspan 3 -sticky ns

这看起来是否正常取决于您使用的视觉风格。您可以通过在要更改的每一行下方放置一个框架来更改行的颜色(您可能必须lower 它,并且您必须强制它准确占据哪些单元格)。

堆叠小部件可以产生一些真正令人敬畏的效果,但要做到正确则要困难得多。如果你真的想要一张表格,我建议只使用 tktable,因为它实际上有一个表格模型,而不是拼凑在一起的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多