【问题标题】:How can I scroll a single frame in Perl Tk?如何在 Perl Tk 中滚动单帧?
【发布时间】:2010-02-16 17:20:12
【问题描述】:

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

我什至尝试过以下代码:

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

但我得到一个错误。 Perl 说scrollcommand 不是一个可识别的命令。

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

【问题讨论】:

    标签: perl scrollbar frame tkx


    【解决方案1】:

    框架小部件不可滚动(即它们不支持xviewyview 方法)。在框架中使用文本小部件而不是标签。如果您很懒惰,请使用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();
    

    【讨论】:

    • 感谢您的帮助。我不知道不能滚动的框架。我使用了一个带有功能的文本小部件,可以在每次需要时禁用、重新启用和写入。当我完成我的 GUI 最重要的部分时,我将看看你的模块。我还是谢谢你。咻
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2014-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多