AttributeError:“MyWindow”对象在“名称”上没有属性“combo”已更改'

2024-04-19 03:05:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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新手,但我被这个错误缠住了。我遵循了教程和文档,但我似乎不明白这一点。我不明白为什么它说它没有属性,即使我在“自我”之后提到它


Tags: nameselfgtkinitdevicewindowlistclass
1条回答
网友
1楼 · 发布于 2024-04-19 03:05:40

您必须在类中创建方法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

相关问题 更多 >