2016-12-07 3 views
0
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, но я так застрял в этой ошибке. Я следил за учебниками, а также с документами, но, похоже, я не знаю, как это сделать. Я не могу понять, почему он говорит, что у него нет атрибута, хотя я упоминаю его после «я».AttributeError: объект 'MyWindow' не имеет атрибута 'on_name_combo_changed'

+0

'on_name_combo_changed' должен быть свой собственный метод в классе. Я не вижу 'def on_name_combo_changed (self)' it в вашем коде. – furas

ответ

0

Вы должны создать свой метод 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

+0

Спасибо u !!!!!!! – AmolJ

Смежные вопросы