Как предотвратить расширение Gtk.Switch внутри Gtk.Grid? - PullRequest
1 голос
/ 20 апреля 2020

В следующем примере кода у меня есть 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 ]

2 голосов
/ 20 апреля 2020

Происходит следующее: с помощью 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, если хотите.

0 голосов
/ 20 апреля 2020

После прочтения документации Gtk-3.0 я обнаружил, что у виджетов есть свойство под названием halign , которое в этом случае, по-видимому, имеет значение FILL по умолчанию.

Решение состоит в том, чтобы просто добавить следующую строку, чтобы указать, что halign должно быть START для коммутатора:

my_switch.set_halign(Gtk.Align(1))
...