Форум сайта python.su
Здравствуйте !
При запуске приложения список self.db.list заполняется значениями из базы данных
и выводится в TreeView кодом следующего вида:
model = gtk.ListStore(str)
for item in self.db.list:
iter = model.append()
model.set(iter, 0, item)
treeview = gtk.TreeView(model)
render = gtk.CellRendererText()
tvcolumn = gtk.TreeViewColumn('My listing', render, text=0)
treeview.append_column(tvcolumn)
treeview.set_search_column(0)
Добавление элементов в список self.db.list производится диалогом:
def new_item(self, action):
dialog = gtk.Dialog('Create new item', self, 0,
(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_OK, gtk.RESPONSE_OK))
dialog.connect('response', lambda d, r: d.destroy())
dialog.set_default_size(400, 100)
label = gtk.Label('Enter new item')
dialog.vbox.pack_start(label)
entry = gtk.Entry()
dialog.vbox.pack_start(entry)
dialog.show_all()
response = dialog.run()
self.db.CreateNewItem(entry.get_text())
dialog.destroy()
(где метод self.db.CreateNewItem() добавляет значения в self.db.list)
Как добиться, чтобы при закрытии диалогового окна TreeView обновилась ?
Подскажите, пожалуйста, хотя бы, как в принципе это принято делать, можно на словах.
Офлайн
После self.db.CreateNewItem(entry.get_text()) вызови ф-цию, которая обновит TreeView.
Офлайн
Ясно.
Но какую функцию ?
Я наверное туплю, но если, предположим первый кусок кода (рисующий TreeView) выделить в отдельный метод
и вызывать в диалоге его, то, естесственно, в появляется еще один, новый TreeView(с обновленным списком), что связано с вызовом show() (ну или show_all()). :/
А если, show() не вызывать, тогда ничего не обновляется …
Help.
Офлайн
Зачем делать еще один TreeView? Обнови его модель и все. Все само пререрисуется потом.
Офлайн
Блин, точно же - модель ! :)
Спасибо, slivlen !
Офлайн
Для тех, кто будет в будущем интересоваться, оставляю решение:
Вот этот кусок:
for item in self.db.list:
iter = model.append()
model.set(iter, 0, item)
Отредактировано (Апрель 20, 2007 12:04:36)
Офлайн