Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Gtk+中,将水平盒放入垂直盒中;3._Python_Python 3.x_User Interface_Gtk_Gtk3 - Fatal编程技术网

Python 在Gtk+中,将水平盒放入垂直盒中;3.

Python 在Gtk+中,将水平盒放入垂直盒中;3.,python,python-3.x,user-interface,gtk,gtk3,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

我使用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)
它基本上是一个文件管理器。问题是列表视图中的项目占用了所需的最小空间。如下图所示:

在第一幅图像中,列表占据了整个屏幕的空间,但在size列附近仍然有一个白色边框

在第二幅图像中,即使侧边栏大小减小,列表中的项目也会减少

侧边栏是采取列表_视图的大小,如何避免这种情况


如何正确设置gui格式,以及如何为列表视图的列提供适当的填充和间距?

首先,您应该将hexpand和vexpand直接设置为
列表视图

list_view.set_hexpand (True)
list_view.set_vexpand (True)
第二:set_halign和set_valign不需要数字,而需要枚举值:

horizontal_box.set_halign(Gtk.Align.FILL)

关于列宽:有一系列方法来控制大小:

set_sizing
set_resizable
set_fixed_width
set_min_width
set_max_width

请无法运行此代码段。这是github链接-。您只需要运行其中的layout.py文件。我设置了_halign(Gtk.Align.START)。我的侧栏现在已正确对齐。我将列表视图添加到一个滚动窗口中,输出在水平方向上非常小。我该如何解决这个问题?“小”是无法衡量的。若你们并没有改变滚动策略,那个么你们应该遵循大小请求(800×600)。现在我用treeviewcolumn.set_expand(True)和scrolled_window解决了这个问题。set_min_content_width(1000)表示它太小了,以至于什么都看不见,并且有一个水平滚动条存在。我还尝试了滚动窗口。设置策略(hscrollbar\u policy=Gtk.PolicyType.NEVER,vscrollbar\u policy=Gtk.PolicyType.AUTOMATIC),但在此之后,它只是使用了所需的最小空间,在“size”列附近创建了白色边框,如上图所示。