【问题标题】:Python GTK 3 Table: Buttons should not expandPython GTK 3 表:按钮不应展开
【发布时间】:2014-09-28 20:31:02
【问题描述】:

使用以下代码,我遇到了问题,当我调整窗口大小时,“Log Leeren”和“Auto Scroll”按钮会改变它们的高度。它们应该正好是一个文本行高,并且视口的其余部分应该由滚动窗口使用

我需要改变什么:

class ConsoleLogWindow(Gtk.Window):
    def __init__(self, server):
        self.log = server["log"];
        Gtk.Window.__init__(self, title="Meteor Log von %s" % server["name"])

        # self.set_icon_from_file("filename")

        self.set_size_request(800,500)

        table = Gtk.Table(3, 2, False)

        self.add(table)

        # Should be only one line of thext high
        self.button_clear = Gtk.Button(label="Log Leeren")
        self.button_scroll = Gtk.Button(label="Auto Scroll")

        table.attach(self.button_clear, 2, 3, 1, 2)
        table.attach(self.button_scroll, 0, 1, 1, 2)

        # should take as much space as is available.
        scrollWindow = Gtk.ScrolledWindow()
        scrollWindow.set_hexpand(False)
        scrollWindow.set_vexpand(True)

        self.content_table = Gtk.Table(len(self.log)+1, 4, False)
        # self.content_table is filled here.

        scrollWindow.add(self.content_table)

        table.attach(scrollWindow, 0, 3, 0, 1)

窗口类在如下函数中调用:

def show_errors_menu(self, widget):
    print ("Showing Error Menu")
    win = ConsoleLogWindow(widget.get_node());
    win.connect("delete-event", Gtk.main_quit)
    win.show_all()
    Gtk.main()

【问题讨论】:

    标签: python user-interface gtk3


    【解决方案1】:

    不要使用Gtk.Table;它并不总是尊重其子小部件的expandalign 属性。自 GTK 3.0 以来,它的替代品是 Gtk.Grid。使用它,您只需确保 expand 在滚动窗口上设置为 true,在按钮上设置为 false。

    【讨论】:

    • 这解决了我最初的按钮垂直扩展问题,但现在我的完整网格只有 2 个按钮宽。
    【解决方案2】:

    至少在 Qt 方面,框架为每个小部件考虑一个size 属性、一个minimumSize 属性和一个maximumSize 属性。将这三个属性设置为相同的高度和宽度值会使它们无法调整大小。 Java 的小部件有一个显式的resizable 属性。我不知道 GTK3 如何防止调整大小,但是在进行一些网络搜索时我遇到了this recipe,它通过扩展和添加据说可以工作的self.set_resizable(False) 来使窗口无法调整大小。试试看,告诉我!

    【讨论】:

    • 我不想禁用窗口的大小调整,我想在调整窗口大小时禁用按钮的大小调整,我的可滚动区域(在 GTK 3 中称为 ScrolledWindow)占用尽可能多的空间可用。
    • 我知道您想冻结按钮的大小,所以我的建议是将我发送给您的配方中的相同技术应用于按钮(即,创建 GTK 按钮的子类并添加属性self.set_resizable(False)(对不起,如果我没有解释清楚):/试试看,让我知道!:D
    猜你喜欢
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多