gpt4 book ai didi

perl - 如何在 Perl Tkx 中实现带滚动条的可调整大小的 TreeView 小部件?

转载 作者:行者123 更新时间:2023-12-02 08:25:08 25 4
gpt4 key购买 nike

我试图使用 Perl Tkx 创建一个窗口,其中包含一个 TreeView 小部件和一个位于其右侧的滚动条。我需要 TreeView 小部件在用户调整窗口大小时自动调整大小。

这是我的:

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

my $frm = $mw->new_ttk__frame(-padding => "2 6 12 12");
$frm->g_grid(-column => 0, -row => 0, -sticky => "nwes");
$frm->g_pack(-expand => 1, -fill => 'both');

my $tree = $frm->new_ttk__treeview;
$tree->g_grid(-column => 1, -columnspan => 5, -row => 1, -sticky => "we");
$tree->g_pack(-expand => 1, -fill => 'both');

my $scrollbar = $frm->new_ttk__scrollbar(-orient => 'vertical', -command => [$tree, 'yview']);
$scrollbar->g_grid(-column => 6, -row => 1, -sticky => "we");
$scrollbar->g_pack(-expand => 1, -fill => 'both');

$tree->configure(-yscrollcommand => [$scrollbar, 'set']);

两个小部件都显示在窗口中,并且调整大小有效,但不幸的是,滚动条放置在树的下方,而不是右侧。如果我删除三个 g_pack(-expand => 1, -fill => 'both') 行,定位是正确的,但调整大小不起作用。如何将滚动条放在树的右侧,并使自动调整大小起作用?

最佳答案

您同时使用 gridpack 将小部件布局到同一个容器中,这是不受支持的。第一步是在任何地方都只使用 pack,因为您对小部件的安排很简单。

对滚动条使用 -expand => 1 意味着 Tk 会尝试给它尽可能多的空间。您不希望滚动条出现这种情况,因为它只应为其分配足够的空间。我已将 -fill 更改为 'y' 作为样式问题,但它似乎没有太大区别。

$scrollbar->g_pack(-expand => 0, -fill => 'y');

pack 默认情况下会将小部件一个接一个地排列。所以,如果你需要从左边开始的水平排列,你应该添加一个 -side 参数:

$tree->g_pack(-expand => 1, -fill => 'both', -side => 'left');
$scrollbar->g_pack(-expand => 0, -fill => 'y', -side => 'left');

我建议您阅读优秀的 Mastering Perl/Tk书,尤其是有关 pack 的部分几何管理器。本书使用Tk module而不是 Tkx,但我认为在两者之间映射概念应该很容易。

关于perl - 如何在 Perl Tkx 中实现带滚动条的可调整大小的 TreeView 小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32894644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com