Tk/Tkx滚动条的使用

本文介绍了如何在Perl的Tk/Tkx库中使用滚动条与列表组件或文本框进行同步滚动。通过示例代码展示了如何移动单个组件以及如何将一个滚动条与两个或多个组件关联,确保在滚动时所有相关组件内容同步更新。
摘要由CSDN通过智能技术生成

滚动条配合列表组件,文本框组件等能改变组件的外观,浏览组件中超出显示范围的内容.

移动单个的组件

  • 用户调用滚动操作时,滚动条利用自己的-command选项来通知关联组件(文本框),同时组件在调整自己外观时利用自己的-yscrollcommand选项通知滚动条,滚动条会更新它的显示状态.如果不用-yscrollcommand通知滚动条,滚动条会是一个长长的长条,不会变.
  • 所以滚动条的实现是一个双向的过程.

下面的代码实现了一个滚动条和文本框

my $text = $mw->new_text(-width => 80, -height => 15, -wrap => "none");
$text->g_grid(-column => 0, -row => 0, -sticky => "news");
my $sc = $mw->new_scrollbar(-orient => "v", -command => [$text, "yview"]); ## 滚动条指向组件
$sc->g_grid(-column => 1, -row => 0, -sticky => "ns",);
$text->configure(-yscrollcommand => [$sc, "set"],); ## 组件通知滚动条

移动两个到多个组件

前面的滚动条只能控制一个文本框.但是现在需要为文本框增加显示行号功能,同时拖动滚动条时,行号随着文本框的上下移动而移动.

  • 首先需要两个文本框,一个用来显示行号,一个用来显示文本.
  • 用一个滚动条绑定两个文本框,当拖动滚动条时,行号和文本两个组件都将随着滚动条移动.
  • 行号框能(不能)控制滚动条的状态变化.
  • 文本框作为主窗口,必须要通知滚动条,去更新滚动条状态

tcl代码示例

可以根据tcl代码改编成python\perl代码

#!/usr/bin/tcl
  foreach n {
  0 1 2 3 4 5 6 7 8 9 a b c d e f g h} { lappend list1 item1-$n }
  foreach n {
  0 1 2 3 4 5 6 7 8 9 a b c d e f g h} { lappend list2 item2-$n }
  frame .f -relief sunken -bd 2 -highlightt 0
  listbox
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值