问题描述
我正在使用 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 (将#修改为@)