ButtonBox中的同类子项

时间:2015-06-01 01:34:09

标签: python python-3.x gtk gtk3

我在ButtonBox中添加了几个孩子,我希望它们不是同质的。所以我调用了ButtonBox.set_homogeneous(False)并且大多数都有效。但是当我调整窗口大小的最小尺寸时,会出现一个垂直滚动条,我看到ButtonBox旁边有很多空的空间。我能够通过单独指定每个子节点作为非同类调用ButtonBox.set_child_non_homogeneous(child,True)来解决这个问题,同时也保留在上一次调用ButtonBox.set_homogeneous(False)。

我的问题是,为什么会发生这种情况?我将ButtonBox的布局设置为EXPAND,应该占用所有空间。

我做了一些测试代码来说明我在说什么。你可以尝试使用和不使用注释行来查看我提到的两种情况。

import sys
from gi.repository import Gtk


class Application(Gtk.Application):

    def __init__(self):
        super().__init__(application_id='com.stackoverflow.xor')
        self.connect('activate', self.on_activate)
        self.connect('startup', self.on_startup)

    def on_startup(self, app):
        self.window = Gtk.ApplicationWindow(application=app)
        self.window.set_default_size(200, 200)
        self.window.add(MainView(self))

    def on_activate(self, app):
        self.window.show_all()


class MainView(Gtk.ScrolledWindow):

    def __init__(self, app):
        super().__init__()
        button_list = Gtk.ButtonBox(orientation=Gtk.Orientation.VERTICAL)
        button_list.set_layout(Gtk.ButtonBoxStyle.EXPAND)
        button_list.set_homogeneous(False)
        button_list.get_style_context().remove_class('linked')
        for i in range(4):
            button = Gtk.Button()
            label = Gtk.Label('\n'.join(['test test'] * (i + 1)))
            button.add(label)
            button_list.pack_start(button, False, False, 0)
            #button_list.set_child_non_homogeneous(button, True)
        self.add(button_list)


if __name__ == '__main__':
    main_app = Application()
    exit_status = main_app.run(sys.argv)
    sys.exit(exit_status)

1 个答案:

答案 0 :(得分:1)

您的问题是当您将按钮添加到您设置的框扩展为False。

  

button_list.pack_start(button,False,False,0)

具有EXPAND布局的按钮框与其扩展自己的子项不同。

编辑:这是在#gtk +上讨论的,但是对于这种布局,孩子们都应该将Expand和Fill设置为True。