Форум сайта python.su
0
Здраствуйте,такая проблема:
создаю комбобокс
textCombo = gtk.combo_box_new_text()
заполняю его с помощью
textCombo.append_text()
как его очистить если информацию для заполнения я беру из бд и не знаю сколько там элементов, тоесть
combobox.remove_text (index) использовать не могу.
Офлайн
0
Можно очистить model(ListStore), например так:
import pygtk
pygtk.require('2.0')
import gtk
class ComboBoxExample:
def __init__(self):
window = gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit())
combobox = gtk.combo_box_new_text()
window.add(combobox)
combobox.append_text('First')
combobox.append_text('Second')
combobox.append_text('Third')
combobox.connect('changed', self.clear_model)
window.show_all()
return
def clear_model(self, combobox):
model = combobox.get_model()
model.clear()
return
def main():
gtk.main()
return
if __name__ == "__main__":
bcb = ComboBoxExample()
main()
Офлайн
0
Спасибо большое
Офлайн
0
я правильно понимаю, что если после вызова функции очищающеё модель снова добавлять в комбобокс текстовую информацию то потом можно будет
воспользоваться функцией
def showText(self):
m = self.textListCombo.get_model()
index = self.textListCombo.get_active()
textName=m[index][0]
print textName
Офлайн
0
Самое простое - это проверять index. Когда модель пуста index=-1. Можно еще заключить print m в блок
try-except, но тогда будут варнинги в консоли. Пример распечатки пустой модели:
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
class ComboBoxExample:
def __init__(self):
window = gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit())
combobox = gtk.combo_box_new_text()
window.add(combobox)
#combobox.append_text('First')
#combobox.append_text('Second')
#combobox.append_text('Third')
combobox.connect('changed', self.changed_cb)
combobox.set_active(0)
window.show_all()
return
def changed_cb(self, combobox):
model = combobox.get_model()
index = combobox.get_active()
print index
if index >= 0:
print model[index][0]
def main():
gtk.main()
return
if __name__ == "__main__":
bcb = ComboBoxExample()
main()
Офлайн
0
спасибо помогло
Офлайн