Ширина символов GTK Label и выравнивание

У меня есть Gtk.Label, содержащийся в Gtk.Grid примерно так:

    self.__grid = Gtk.Grid()
    self.__grid.set_row_spacing(2)
    self.__grid.set_column_spacing(5)
    self.__grid.props.margin = 5
#...
    self.clock_label = Gtk.Label("N/A")
    self.clock_label.set_halign(Gtk.Align.START)
    self.__grid.attach(self.clock_label, current_col, current_row, 1, 1)

Что работает, как ожидалось. Однако я столкнулся с нежелательным поведением, которое означало, что по мере того, как тикали секунды, текст метки, установленный в другом месте, смещал столбец (поскольку метка часов является самой широкой вещью в этом столбце), вызывая все элементы справа от него. перемещаться вперед и назад по мере того, как сама струна становилась шире (с секундами, например, 8) или уже (с секундами, такими как 1).

Чтобы решить эту проблему, я добавил строку в код настройки для этой метки.

    self.clock_label.set_width_chars(8)

И вуаля, это сработало. Однако он настаивает на центрировании текста, когда я это делаю, независимо от наличия или отсутствия set_halign().

Мне бы очень хотелось иметь метку, текст которой начинается с левой границы ячейки, но ширина которой также дополняется, чтобы изменения длины строки не вызывали беспокойства.

Любая помощь приветствуется. знак равно


person musasabi    schedule 02.04.2019    source источник


Ответы (1)


Я нашел ответ здесь после того, как SO дал его мне в столбце "Связанные". Оказывается, xalign (с параметром 0.0) прижимает метку к левой границе, как я и хотел. Ура.

Хотя я нигде не вижу, чтобы halign действительно амортизировалось. Здесь или здесь. Тогда не так ли? Это немного сбивает с толку.

person musasabi    schedule 02.04.2019
comment
halign является общим для всех виджетов и влияет на выравнивание виджета. xalign относится к GtkLabel и влияет на выравнивание текста. В документации говорится то же самое (хотя IMO в довольно загадочная форма). - person ntd; 03.04.2019