python - ButtonBox 中的同质子级

标签 python python-3.x gtk gtk3

我向 ButtonBox 添加了一些子项,我希望它们不是同质的。所以我调用了 ButtonBox.set_ Uniformeous(False) 并且大部分都有效。但是,当我将窗口大小调整为最小尺寸并出现垂直滚动条时,我发现 ButtonBox 下方有很多空白空间。我能够通过单独将每个子项指定为非同质调用 ButtonBox.set_child_non_osmoeous(child, True) 来解决此问题,同时还保留之前对 ButtonBox.set_osmoeous(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)

最佳答案

您的问题是当您将按钮添加到设置“Expand”为 False 的框中时。

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

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

编辑:这已在 #gtk+ 上讨论过,但对于此布局,子级都应该将 Expand 和 Fill 设置为 True。

关于python - ButtonBox 中的同质子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30564512/

相关文章:

python - 在 Python 脚本中使用 py_compile.compile()

python - 将 "yield from"语句转换为 Python 2.7 代码

python - 自定义仪表板的 Django 历史记录

python - 查看函数是否被调用

python - 我应该向项目中的每个文件添加 __future__ 语句吗?

gtk - 如何扩展 Gtk 标签以填充整个水平空间?

python - 如何在我的 python 虚拟环境中设置 pytest

python - 使用线程时不触发 Pyttsx3 回调

c - 在 Vala 中继承接口(interface) - 与基本方法不兼容

c - 如何在Gtk中组合accel键?