Выравнивание текста в gtk.MenuItem

Я пишу appindicator скрипт на python для моей панели Gnome (в Ubuntu 12.10, английский как общесистемный язык) с gtk.Menu, содержащим MenuItem с надписями на иврите.

Текст правильно выровнен вправо [иврит - RTL], но проблема в том, что каждая строка меню (прямоугольник, ограничивающий метки) сама выровнена по левому краю, так что отступ для правого края становится различным для разных элементов:

(для ясности, в этом примере есть два пункта меню, каждый с двумя строками текста) Screenshot

Мой тестовый код выглядит следующим образом:

#!/usr/bin/python
#coding=utf-8

import appindicator
import gtk

a = appindicator.Indicator('test_indicator', '/some/ico', appindicator.CATEGORY_APPLICATION_STATUS)
a.set_status(appindicator.STATUS_ACTIVE)
m = gtk.Menu()

item0 = gtk.MenuItem("דוגמה: שורה ראשונה\nשורה שניה")
item1 = gtk.MenuItem("שורה שלישית\nשורה רביעית")
m.append(item0)
m.append(item1)

a.set_menu(m)
item0.show()
item1.show()
gtk.main()

Есть ли способ выровнять и текст, и строку вправо, не меняя язык в глобальном масштабе? Я не вижу ни соответствующих ключей в gconf, ни соответствующих членов в классе MenuItem (set_right_justified не выполняет эту работу).

Обновление

Обновление кода, вдохновленное предложением Тимо (обратите внимание на переход к Gtk3):

from gi.repository import Gtk
from gi.repository import AppIndicator3 as appindicator

a = appindicator.Indicator.new('test_indicator', '/some/ico', appindicator.IndicatorCategory.APPLICATION_STATUS)
a.set_status(appindicator.IndicatorStatus.ACTIVE)
m = Gtk.Menu()

item0 = Gtk.MenuItem("\tדוגמה: שורה ראשונה\n\tשורה שניה")
item1 = Gtk.MenuItem("\tשורה שלישית\n\tשורה רביעית")
item0.set_halign(Gtk.Align.END)
item1.set_halign(Gtk.Align.END)

#the rest is the same

Важная настройка в этой версии: добавление ведущих \ для каждой строки - в противном случае текст начинается за границы меню. Это больше похоже на обходной путь, но текущее состояние почти удовлетворительное:

Scrennshot2

2
задан 25 November 2013 в 00:44

1 ответ

set_right_justified() устарела с GTK3.2 в любом случае и должна быть заменена на gtk_widget_set_hexpand или gtk_widget_set_halign

Редактировать : Сэкономьте время с портированием на GTK3, эти методы тоже не работают. Вот ваш перенесенный пример:

#!/usr/bin/python
#coding=utf-8

from gi.repository import Gtk
from gi.repository import AppIndicator3 as appindicator

a = appindicator.Indicator.new('test_indicator', '/some/ico',
                               appindicator.IndicatorCategory.APPLICATION_STATUS)
a.set_status(appindicator.IndicatorStatus.ACTIVE)
m = Gtk.Menu()

item0 = Gtk.MenuItem("דוגמה: שורה ראשונה\nשורה שניה")
item1 = Gtk.MenuItem("שורה שלישית\nשורה רביעית")
item1.set_hexpand(True)
item1.set_halign(Gtk.Align.END)
m.append(item0)
m.append(item1)

a.set_menu(m)
item0.show()
item1.show()
Gtk.main()

Кажется, что это ограничение аппендикатора (как и многие).

0
ответ дан 25 November 2013 в 00:44
  • 1
    добро пожаловать, приятно проведите время – Maythux 22 May 2015 в 09:07

Другие вопросы по тегам:

Похожие вопросы: