GTK 对话框边距不起作用

GTK Dialog Margin not working

提问人:beli3ver 提问时间:5/26/2018 最后编辑:Aran-Feybeli3ver 更新时间:1/5/2022 访问量:589

问:

我创建了一个带有网格的小对话框。这是它:

enter image description here

但我不明白为什么保证金不起作用:

class PreferencesDialog(Gtk.Dialog):

    def __init__(self, parent):
        Gtk.Dialog.__init__(self, "Preferences", parent, 0)

        self.set_default_size(300, 300)

        grid = Gtk.Grid(column_spacing=10,
                         row_spacing=10)

        label = Gtk.Label("Custom Location")
        switch = Gtk.Switch()
        switch.set_active(False)

        grid.add(label)
        grid.margin_left = 20
        grid.margin_right = 20
        grid.margin_top = 20
        grid.margin_bottom = 20

        grid.attach(switch, 1, 0, 1, 1)

        box = self.get_content_area()
        box.add(grid)
        self.show_all()

我看到窗口的大小:300x300 不再起作用。 你能帮我吗?

蟒蛇 python-3.x gtk gtk3

评论

0赞 Aran-Fey 5/26/2018
窗户的大小有什么问题?它在我的 PC 上运行良好。
0赞 beli3ver 5/26/2018
是的,我现在看到了。坦尔斯

答:

4赞 Aran-Fey 5/26/2018 #1

Gtk widget 是基于 GObject 的,这意味着你必须通过 props 属性来访问widget的属性:

grid.props.margin_left = 20
grid.props.margin_right = 20
grid.props.margin_top = 20
grid.props.margin_bottom = 20

或者,您可以使用 setter 函数

grid.set_margin_left(20)
grid.set_margin_right(20)
grid.set_margin_top(20)
grid.set_margin_bottom(20)
0赞 Shahan M 1/5/2022 #2

选择的答案是要走的路,但我想从Gtk 3.12版开始添加它,并且被弃用了。set_margin_left()set_margin_right()

现在正确的方法是使用 和 。set_margin_start()set_margin_end()

以下是所选答案的文档和修改后的示例。

grid.set_margin_start(20)
grid.set_margin_end(20)

顶部和底部的 setter 函数相同。

P.S - 我是Gtk API的新手。我遇到了这个答案,并在尝试时收到了弃用警告。