如何防止Gtk.Switch在Gtk.Grid内扩展?

时间:2020-04-20 09:31:00

标签: gtk gtk3 pygtk

在以下示例代码中,我有2列Gtk.Grid,其中包含Gtk.Switch。如何防止此开关充满整个单元格?

#!/bin/python3
import gi

gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Foo")
        self.set_border_width(12)

        my_grid = Gtk.Grid()
        my_grid.set_column_spacing(12)
        my_grid.set_row_spacing(6)
        self.add(my_grid)

        first_label = Gtk.Label(label="a first label")
        first_label.set_xalign(1)
        my_grid.add(first_label)
        my_button = Gtk.Button(label="a button quite large")
        my_grid.add(my_button)

        second_label = Gtk.Label(label="a second label")
        second_label.set_xalign(1)
        my_grid.attach(second_label, 0, 1, 1, 1)
        my_switch = Gtk.Switch()
        my_grid.attach(my_switch, 1, 1, 1, 1)

win = MyWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

谢谢!

2 个答案:

答案 0 :(得分:2)

正在发生的事情是使用attach():

my_grid.attach(my_switch, 1, 1, 1, 1)

将对齐标记设置为Gtk.Align.FILL

添加以下内容

my_switch.props.halign = Gtk.Align.START

请确保开关不会填满整个空间,可以根据需要使用Gtk.Align.CENTER或Gtk.Align.END。

答案 1 :(得分:0)

再次阅读Gtk-3.0 documentation后,我发现小部件具有一个名为halign的属性,在这种情况下,默认情况下它似乎具有值FILL

解决方案是简单地添加以下行以指示halign应该是START的开关:

my_switch.set_halign(Gtk.Align(1))
相关问题