芜湖不芜
我采用了流行的 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()