2

我正在尝试为转换程序创建 GUI。我想创建一个包含日志文件的框架,但我无法得到它。我发现了一些代码可以使整个窗口可滚动,但这不是我想要的。我只想滚动一个包含带有链接文本变量的标签的框架。

我什至尝试过以下代码:

 $s = $parent->new_ttk__scrollbar(-orient => 'vertical', -command => [$frame, 'yview']);
 $frame->configure(-scrollcommand => [$s, 'set']);

但我得到一个错误。Perl 说这scrollcommand不是一个公认的命令。

我在 pastebin 上发布了一段代码:http: //pastebin.com/d22e5b134

4

1 回答 1

2

框架小部件不可滚动(即它们不支持xviewandyview方法)。在框架中使用文本小部件而不是标签。如果您很懒惰,请使用Tkx::Scrolled为您完成。如果您使用标签是因为您希望它是只读的,请改用Tkx::ROText。当我在推广我自己的模块时,使用Tkx::FindBar获得一个漂亮的 Find-As-You-Type 搜索界面。

use strict;
use warnings;

use Tkx;
use Tkx::FindBar;
use Tkx::ROText;
use Tkx::Scrolled;

my $mw = Tkx::widget->new('.');

my $text = $mw->new_tkx_Scrolled('tkx_ROText',
    -scrollbars => 'osoe',
    -wrap       => 'none',
);

my $findbar = $mw->new_tkx_FindBar(-textwidget => $text);

$findbar->add_bindings($mw,
    '<Control-f>'  => 'show',
    '<Escape>'     => 'hide',
    '<F3>'         => 'next',
    '<Control-F3>' => 'previous',
);

$text->g_pack(-fill => 'both', -expand => 1);

$findbar->g_pack(
    -after => $text,
    -side  => 'bottom',
    -fill  => 'x',
);

$findbar->hide();

open(my $fh, '<', __FILE__) or die;
$text->insert('end', do { local $/; <$fh> });
close $fh;

$mw->g_focus();
Tkx::MainLoop();
于 2010-02-17T21:39:38.727 回答