Python GTK 3+:如何在组合框小部件中居中文本?

所以我有一个组合框,我想将内部文本居中(现在它都被推到了左边)。但是,我似乎无法找到执行此操作的函数,也无法通过 CSS 触及它。有什么建议吗?谢谢。


慕田峪7331174
浏览 206回答 1
1回答

芜湖不芜

我采用了流行的 Gtk Combobox 示例并对其进行了修改以显示如何将文本居中:import gigi.require_version('Gtk', '3.0')from gi.repository import Gtkclass ComboBoxWindow(Gtk.Window):    def __init__(self):        Gtk.Window.__init__(self, title="ComboBox Example")        self.set_border_width(10)        name_store = Gtk.ListStore(int, str)        name_store.append([1, "Billy Bob"])        name_store.append([11, "Billy Bob Junior"])        name_store.append([12, "Sue Bob"])        name_store.append([2, "Joey Jojo"])        name_store.append([3, "Rob McRoberts"])        name_store.append([31, "Xavier McRoberts"])        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)        name_combo = Gtk.ComboBox.new_with_model_and_entry(name_store)        name_combo.connect("changed", self.on_name_combo_changed)        name_combo.set_entry_text_column(1)        vbox.pack_start(name_combo, False, False, 0)        country_store = Gtk.ListStore(str)        countries = ["Austria", "Brazil", "Belgium", "France", "Germany",        "Switzerland", "United Kingdom", "United States of America",        "Uruguay"]        for country in countries:            country_store.append([country])        country_combo = Gtk.ComboBox.new_with_model(country_store)        country_combo.connect("changed", self.on_country_combo_changed)        renderer_text = Gtk.CellRendererText()        renderer_text.set_property("xalign", 0.51) #less than 0.51 has no affect        country_combo.pack_start(renderer_text, True)        country_combo.add_attribute(renderer_text, "text", 0)        vbox.pack_start(country_combo, False, False, True)        currencies = ["Euro", "US Dollars", "British Pound", "Japanese Yen",        "Russian Ruble", "Mexican peso", "Swiss franc"]        currency_combo = Gtk.ComboBoxText()        currency_combo.set_entry_text_column(0)        currency_combo.connect("changed", self.on_currency_combo_changed)        for currency in currencies:            currency_combo.append_text(currency)        vbox.pack_start(currency_combo, False, False, 0)        self.add(vbox)    def on_name_combo_changed(self, combo):        tree_iter = combo.get_active_iter()        if tree_iter is not None:            model = combo.get_model()            row_id, name = model[tree_iter][:2]            print("Selected: ID=%d, name=%s" % (row_id, name))        else:            entry = combo.get_child()            print("Entered: %s" % entry.get_text())    def on_country_combo_changed(self, combo):        tree_iter = combo.get_active_iter()        if tree_iter is not None:            model = combo.get_model()            country = model[tree_iter][0]            print("Selected: country=%s" % country)    def on_currency_combo_changed(self, combo):        text = combo.get_active_text()        if text is not None:            print("Selected: currency=%s" % text)win = ComboBoxWindow()win.connect("destroy", Gtk.main_quit)win.show_all()Gtk.main()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python