首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl tk -条目小部件之间的选项卡

Perl tk -条目小部件之间的选项卡
EN

Stack Overflow用户
提问于 2013-11-14 13:15:03
回答 1查看 466关注 0票数 0

我有一个非常简单的GUI,它与postgresql数据库交互。主机被分成4个象限,每个象限都有4个入口小部件。下面是一个象限的示例代码

代码语言:javascript
复制
my $f_blue = $bottom_half->Frame(-bg=>'BLUE')-> pack(-side=>'left', -expand=>1, -fill=>'both');
$f_blue->Label(-text=>'BLUE', -bg=>'blue', -fg=>'white')->pack(-side=>'top');

my $blue_table = $f_blue->Table(-rows => 3,
                   -columns => 3,
                   -fixedrows => 1,
                   -fixedcolumns => 1,
                   -scrollbars => 'oo',
                   -relief => 'raised') -> pack(-side => 'top', -expand => 1, -fill=>'both');

$blue_table -> put(1,1,
          $blue_table->Label(-text => 'Cs-137:'));

my $t_blue_cs137 = $blue_table->Entry(-selectbackground=>"blueviolet");
$blue_table -> put(1,2,$t_blue_cs137);

$blue_table -> put(1,3,
          $blue_table->Label(-text => 'MBq'));



$blue_table -> put(2,1,
          $blue_table->Label(-text => 'Tc-99m:'));
my $t_blue_tc99m = $blue_table->Entry(-selectbackground=>"blueviolet");
$blue_table -> put(2,2,$t_blue_tc99m);
$blue_table -> put(2,3,
          $blue_table->Label(-text => 'MBq:'));

$blue_table -> put(3,1,
          $blue_table->Label(-text => 'Tl-201:'));
my $t_blue_tl201 = $blue_table->Entry(-selectbackground=>"blueviolet");
$blue_table -> put(3,2,$t_blue_tl201);
$blue_table -> put(3,3,
          $blue_table->Label(-text => 'MBq:'));

当使用GUI输入数据时,我无法跳过下一个条目。是否有一种设置键绑定的方法,以便我可以循环设置

代码语言:javascript
复制
`$t_blue_cs137` to be active
 PRESS TAB
`$t_blue_tc99m` NOW ACTIVE
PRESS TAB
`$t_blue_tl201` NOW ACTIVE
PRESS TAB
Do the same with the next quadrant
`$t_red_cs137`  in frame $f_red NOW ACTIVE

在perlTK中有办法做到这一点吗?

我试过以下几种方法

代码语言:javascript
复制
$f_blue->bindtags( [ ($f_blue->bindtags)[$t_blue_cs137,$t_blue_tc99m,$t_blue_tl201] ] );
# fix the bindtags order so that widget events are
# processed before class events
$f_blue->bind("<Tab>", sub { $f_blue->focusNext; Tk->break; });

但是,这只允许我在每个子帧和GUI中的按钮之间选择选项卡。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-14 20:58:59

定义

代码语言:javascript
复制
-takefocus => 0,

Table配置中。

默认情况下,-takefocus被设置为一个真值,这将导致FocusChildren方法返回一个空列表,这反过来意味着焦点永远不会分配给表的子部件。这并不是最好的默认情况,但这种行为是在Tk 402.001中引入的,现在更改可能为时已晚。但也许文件中应该有一段描述这个陷阱..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19978616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档