AttributeError: 'MyWindow' object has no attribute 'on_name_combo_changed'

AttributeError: 'MyWindow' object has no attribute 'on_name_combo_changed'

class MyWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="Grid example")
        grid = Gtk.Grid()

        #combobox
        devices_list = Gtk.ListStore(int, str)
        devices_list.append([1, "Device 1"])
        devices_list.append([2, "Device 2"])
        name_combo = Gtk.ComboBox.new_with_model_and_entry(devices_list)
        *name_combo.connect("changed", self.on_name_combo_changed)*
        name_combo.set_entry_text_column(1)
        grid.attach(name_combo, 5, 0, 2, 1)

大家好,我是 python 的新手,但我一直被这个错误困扰。我已经按照教程和文档进行操作,但我似乎无法弄清楚这一点。我不明白为什么它说它没有属性,即使我在 'self.'

之后提到它

您必须在 class 中创建方法 on_name_combo_changed(self, widget)

from gi.repository import Gtk

class MyWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Grid example")

        self.connect("delete-event", Gtk.main_quit)

        grid = Gtk.Grid()
        self.add(grid)

        #combobox
        devices_list = Gtk.ListStore(int, str)
        devices_list.append([1, "Device 1"])
        devices_list.append([2, "Device 2"])

        name_combo = Gtk.ComboBox.new_with_model_and_entry(devices_list)
        name_combo.connect("changed", self.on_name_combo_changed)
        name_combo.set_entry_text_column(1)
        grid.attach(name_combo, 5, 0, 2, 1)

        self.show_all()

    def on_name_combo_changed(self, widget):
        print('ComboBox:', widget)


app = MyWindow()
Gtk.main()

Python GTK+ 3 教程:13. ComboBox