Tk GUI滚动条

时间:2011-09-07 10:24:38

标签: user-interface tcl tk

我有一个问题,即正在制作的滚动条似乎在左边,我尝试了很多组合,以便将它向右移动。

我的代码如下所示:

set dataSheetFrame($k) [frame $curPath($k).frame1 -height 420 -relief groove]
#pack $dataSheetFrame($k)
scrollbar $dataSheetFrame($k).vscroll1 -highlightthickness 0 -orient vertical \
        -width 15
set viewC1($k)  [canvas $dataSheetFrame($k).canvas -height $cHeight1 -width $cWidth1 \
        -yscrollcommand "$dataSheetFrame($k).vscroll1 set" \
        -scrollregion "0 0 $cWidth1 $cHeight1" -bg black]
grid $dataSheetFrame($k).vscroll1 -in $dataSheetFrame($k) -row 0 -column 0 \
        -rowspan 1 -columnspan 1 -sticky news
grid $viewC1($k) -in $dataSheetFrame($k) -row 0 -column 1 \
        -rowspan 1 -columnspan 1 -sticky news
grid rowconfigure $dataSheetFrame($k) 0 -weight 1 -minsize 0
grid columnconfigure $dataSheetFrame($k) 0 -weight 1 -minsize 0
$viewC1($k) create line $cellWidth 0 $cellWidth $cHeight1 -width 3 -fill white
$viewC1($k) create line [expr $cellWidth + $dWidth] 0 \
        [expr $cellWidth + $dWidth] $cHeight1 -width 1 -fill white
$viewC1($k) create line [expr $cellWidth + 2 * $dWidth] 0 \
        [expr $cellWidth + 2 * $dWidth] $cHeight1 -width 1 -fill white

for {set i 0} {$i < [llength $cfgNames]} {incr i} {
    set name [lindex $cfgNames $i]
    $viewC1($k) create text [expr $cellWidth / 2] \
            [expr $offsety + $i * 30 ] -anchor center -width 0 \
            -text $name -justify center -fill white
    set j 1
    foreach process {Slow Typical Fast} {
        set y [expr $offsety + $i * 30 ]
        if {[info exists tpfValues($name,$process)]} {
            $viewC1($k) create text [expr $cellWidth + \
                    $j * $dWidth - $dWidth / 2] $y \
                    -anchor center -width 0 -fill white \
                    -text $tpfValues($name,$process) \
                    -justify center
        }
        $viewC1($k) create line 0 [expr $y + 15] $cWidth1 \
                [expr $y + 15] -width 3 -fill white
        incr j
    }
}

set offsetTpf [llength $cfgNames]

for {set i 0} {$i < [llength $tpfNames]} {incr i} {
    set name [lindex $tpfNames $i]
    $viewC1($k) create text [expr $cellWidth / 2] \
            [expr $offsety + $offsetTpf * 30 ] -anchor center -width 0 \
            -text $name -justify center -fill white
    set j 1
    foreach process {Slow Typical Fast} {
        set y [expr $offsety + $offsetTpf * 30 ]
        if {[info exists tpfValues($name,$process)]} {
            $viewC1($k) create text [expr $cellWidth + \
                    $j * $dWidth - $dWidth / 2] $y \
                    -anchor center -width 0 -fill white \
                    -text $tpfValues($name,$process) \
                    -justify center
        }
        $viewC1($k) create line 0 [expr $y + 15] $cWidth1 \
                [expr $y + 15] -width 3 -fill white
        incr j
    }
    incr offsetTpf
}
$dataSheetFrame($k).vscroll1 configure -command "$viewC1($k) yview"
pack $dataSheetFrame($k) -side left

请帮帮我..

由于

1 个答案:

答案 0 :(得分:3)

你把它放在第0列,所以它当然会出现在左边。您需要将其放在一个大于您放置画布的列的列号中。

当您刚刚学习如何使用网格几何管理器时,如果您实际在一张方格纸上绘制GUI,真的会有所帮助。这样做可以清楚地了解每个小部件进入哪个列,以及它们是否需要跨越其他行或列。