【问题标题】:How do I add a combobox to a message in pygtk?如何在 pygtk 中为消息添加组合框?
【发布时间】:2023-05-22 06:30:02
【问题描述】:

如何在弹出窗口中添加组合框并返回用户选择的结果?我正在尝试从我见过的其他示例中调整代码,因为 gtk 文档不是很清楚。我的情况大致如下,但进展并不快(或者,更准确地说,非常缓慢)。

        message = gtk.Dialog(title=None,
                             parent=None,
                             flags=0,
                             buttons=None)

        combo = gtk.combo_box_new_text()
        for key in self.MyBom.potential_keywords:
            combo.append_text(key)
        combo.set_active(0)

        cell = gtk.CellRendererText()
        combo.pack_start(cell, True)
        combo.add_attribute(cell, 'text', 0)

        response = 0

        message.add_action_widget(combo, response)
        response = message.run()

【问题讨论】:

  • 你应该解释你遇到的实际问题,我们并不都是通灵者。作为评论:不要将 ComboBoxText api(combo_box_new_text()append_text)与实际的 ComboBox 打包 api(使用部分的单元格渲染器)混合:您需要使用其中一个。此外,在运行 messagedialog 之后,您可能想要检查组合中的活动项目,对吧?

标签: python combobox dialog gtk pygtk


【解决方案1】:

add_action_widget() 需要一个可激活的小部件。 您可以尝试使用get_content_area()(一个VBox)并将组合框打包到其中。然后你可以连接“changed”信号来销毁对话框。

【讨论】: