我正在appindicator
为我的 Gnome 面板编写一个 python 脚本(在 Ubuntu 12.10 下,英语作为系统范围的语言),其中gtk.Menu
包含MenuItem
带有希伯来语标签的 。
文本正确地右对齐 [希伯来语是 RTL],但问题是每个菜单栏(标签的边界框)本身都左对齐,因此不同项目的右缩进不同:
(为了清楚起见,此示例中有两个菜单项,每个菜单项有两行文本)
我的测试代码如下:
#!/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
class 中看到相关成员(set_right_justified
无法完成工作)。
更新
代码更新受到 Timo 的建议启发(请注意转向 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
此版本中的重要调整是:为每行添加前导 \t - 否则文本会超出菜单边界。这更像是一种解决方法,但当前状态几乎令人满意:
答案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()
这看起来像是一个 appindicator 限制(像许多一样)。