使用 Python GTK+ 3 将对话框按钮居中对齐

Aligning dialog buttons to center using Python GTK+ 3

我制作了一个使用 GTK 的 Python 应用程序。我想向用户发送一个对话框,要求确认操作,但是在根据 this 教程创建对话框后,我注意到没有明显的方法可以将 'Cancel' 和 'OK' 按钮。

该教程的相关代码如下:

class DialogExample(Gtk.Dialog):
    def __init__(self, parent):
        Gtk.Dialog.__init__(self, "My Dialog", parent, 0,
            (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
             Gtk.STOCK_OK, Gtk.ResponseType.OK))
        self.set_default_size(150, 100)
        label = Gtk.Label("This is a dialog to display additional information")
        box = self.get_content_area()
        box.add(label)
        self.show_all()

在上面的示例中,按钮右对齐。有什么方法可以使用这种创建对话框的方法使按钮居中对齐吗?

Question: Aligning dialog buttons to center



  1. 您想要居中 Gtk.Dialogaction_area,其类型为 Gtk.ButtonBox
    获取 action_area

    Note: Deprecated since version 3.12: Direct access to the action area is discouraged

    a_area = self.get_action_area()
    
  2. 您需要 action_areaparent,类型为 Gtk.Box
    获取 parent 框。

    box = a_area.props.parent
    
  3. To center a Gtk.Widget 你必须重置默认的 packing expand=FalseTrue .
    对于所有其他 packing 选项没有变化。

    box.set_child_packing(a_area, True, False, 0, Gtk.PackType.END)
    
  4. 现在,您可以居中 action_area

    a_area.set_center_widget(None)
    

Output:

测试 Python:3.5 - gi.__version__:3.22.0

我不知道这是否是一种作弊方式,但它似乎有效。

action_area= self.get_action_area()
action_area.set_halign(3)