Pygtk gtk.Entry()和多个get_text()答案

时间:2013-06-01 10:22:39

标签: python gtk pygtk

我正在使用pygtk制作问卷类型的应用程序,特别是我在一个方面苦苦挣扎。

我试图设计它,这样你一次可以问一两个人。所以我有单选按钮,用户可以在一个人或两个人之间进行选择。我这样做的原因是我只需要使用一组gtk.Entry()小部件,gtk.ComboBox()小部件,等等。

所以我目前设置的是“分配数据”方法,根据您询问的人,它会将get_text()信息保存到特定变量。

我想知道当你用单选按钮选择它们时,是否有一些更聪明的方法让他们已经输入的字段的特定人的信息显示在小部件中widget.set_text() = specific_variable

谢谢

1 个答案:

答案 0 :(得分:0)

好吧,如果您为小部件命名(例如,在GtkBuilder文件中或手动命名),您可以执行以下操作:

widgets = [w for w in container_widget.get_children() if hasattr(w, "get_text")]
value_dict = {}

# save values to dictionary
for widget in widgets:
    value_dict[widget.get_name()] = widget.get_text()

# load values from dict
for widget in widgets:
    widget.set_text(value_dict[widget.get_name()])

如果小部件没有名称,您可以使用enumerate,但这样更脆弱。