我正在创建一个基于gtk2的nftables配置软件,这是我的问题:
我有一个HBox,开头没有输入。然后,用户可以按下添加按钮,从而出现下拉列表的第一个实例。当按下按钮时我发出了一个信号连接,并在子界面中创建了下拉列表。在所有创建之后,我将创建的东西打包到Hbox并返回。 如果用户在添加按钮上单击另一次,则会显示另一个实例。在所有代码的末尾,所有下拉信息都应该被读取并放在一起。
我的想法是给我们HBox-> foreach()函数,并使用get_active_value()读取数据。
但是,毕竟,字符串只包含最后一个值。当我在foreach时打印出值时,也会出现最后一个值。
那么,我的错是什么? 非常感谢您的帮助;)
修改
如果我为第一个vbox选择“foo_1”和“foo_2”,在第二个vbox中选择“bar_1”和“bar_2”,则返回的字符串仅包含“bar_1 bar_2 bar_1 bar_2”。
CODE
my $Hbox = Gtk2::HBox->new();
$button->signal_connect('clicked', sub {
my $VBox = Gtk2::VBox->new();
my $dropdown = Gtk2::ComboBox->new_text();
my $dropdown_2 = Gtk2::ComboBox->new_text();
#... create some values ...
$VBox->pack_start($dropdown,FALSE,FALSE,5);
$VBox->pack_start($dropdown_2,FALSE,FALSE,5);
$Hbox->pack_start($VBox, FALSE,FALSE,5);
})
...
my $final;
$HBox->foreach(sub {
$final = $final.$dropdown->get_active_text().$dropdown_2->get_active_text();
}
);
print $final;