标签之间的边界线tcl tk

时间:2014-08-23 00:08:48

标签: user-interface tcl border tk

我有一个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

1 个答案:

答案 0 :(得分:0)

对于完整的表格效果,使用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它,并且您必须强制确切地强制它占用哪些单元格。 / p>

堆叠小部件可以带来一些真正的非常棒的效果,但要做到这一点非常棘手。如果你真的想要一张桌子,我建议你只使用tktable,因为它实际上有一个表格模型,而不是一起被黑的东西。