当我们有大量小部件时如何提高 perl Gtk2 性能

问题描述

我正在使用 Gtk2 编写 perl GUI,它有一个滚动窗口,其中包含许多 GTk2::Expander,其中包括不同的小部件。 问题是当我有大量扩展器(~80,000)时,执行 show_all() 所需的时间很长,而当我打开单个扩展器时需要几秒钟。使用较少的扩展器运行相同的脚本可提供非常快的响应。

由于我的扩展器存在于滚动窗口中并且只有其中的一部分真正可见,有没有办法提高性能?喜欢只显示可见的扩展器并将所有其他扩展器隐藏?

我不能使用 GTK3,我只需要使用 Perl 和 Gtk2。

示例代码

my $ItemsCount = 10000;
my $ScWin      = Gtk2::ScrolledWindow->new(undef,undef);
my $Frame      = Gtk2::Frame->new('Items');
my $ItemsBox   = Gtk2::Table->new(2,$ItemsCount+1,FALSE);

my  $View = Gtk2::Viewport->new();

$ScWin->set_policy('automatic','automatic');   
$View->add($ItemsBox);
$ScWin->add($View);

for my $i (0 .. $ItemsCount-1)  {
    my $exp =  Gtk2::Expander->new();
    $exp     ->set_label("Item #$i");
    $ItemsBox->attach($exp,1,$i,$i+1,'fill',2);
}
$MainBox    ->pack_start    ($ScWin,TRUE,0);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)