将水平框放入Gtk + 3中的垂直框内

时间:2018-04-09 04:34:59

标签: python python-3.x user-interface gtk gtk3

我在python中使用GTK + 3制作了以下GUI:

    Gtk.Window.__init__(self, title="File Manager")
    self.set_size_request(800, 600)
    self.set_position(Gtk.WindowPosition.CENTER)

    vertical_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
    self.add(vertical_box)

    menu_bar = create_menu_bar()
    vertical_box.pack_start(menu_bar, False, False, 0)

    tool_bar = create_tool_bar()
    vertical_box.pack_start(tool_bar, False, False, 0)

    horizontal_box = Gtk.Box()
    vertical_box.pack_start(horizontal_box, False, True, 0)

    side_bar = create_side_bar()
    horizontal_box.pack_start(side_bar, False, False, 0)
    horizontal_box.set_halign(1.0)

    list_view = create_list_view()
    horizontal_box.pack_start(list_view, True, True, 0)

它基本上是一个文件管理器。问题是list_view中的项目占用了所需的最小空间。如下图所示:

When list takes the space of the whole screen, but still there is a white border near size column

When there are fewer items in the list even the sidebar size is reduced

在第一张图片中,列表占据了整个屏幕的空间,但仍然在尺寸列附近有一个白色边框。

在第二张图片中,即使侧边栏尺寸减小,列表中的项目也会减少。

补充工具栏的大小是list_view,如何避免这种情况?

如何正确格式化我的gui,如何为list_view的列提供适当的填充和间距?

1 个答案:

答案 0 :(得分:0)

首先,您应该将hexpand和vexpand直接设置为list_view

list_view.set_hexpand (True)
list_view.set_vexpand (True)

第二:set_halign和set_valign不需要数字,而是枚举值:

horizontal_box.set_halign(Gtk.Align.FILL)

关于列宽:GtkTreeViewColumn有一堆控制大小调整的方法:

set_sizing
set_resizable
set_fixed_width
set_min_width
set_max_width