Найти - Пользователи
Полная версия: pyGTK как удалить все элементы из combobox?
Начало » GUI » pyGTK как удалить все элементы из combobox?
1
diduz
Здраствуйте,такая проблема:
создаю комбобокс
textCombo = gtk.combo_box_new_text()
заполняю его с помощью
textCombo.append_text()
как его очистить если информацию для заполнения я беру из бд и не знаю сколько там элементов, тоесть
combobox.remove_text (index) использовать не могу.
gmorgunov
Можно очистить 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()
diduz
Спасибо большое
diduz
я правильно понимаю, что если после вызова функции очищающеё модель снова добавлять в комбобокс текстовую информацию то потом можно будет
воспользоваться функцией
   
def showText(self):
m = self.textListCombo.get_model()
index = self.textListCombo.get_active()
textName=m[index][0]
print textName
чтобы узнать какой элемент комбобокса выбрал пользователь?
однако возникает ошибка:

IndexError: could not find tree path
File “C:\GTK\project\pr2\python.py”, line 319, in <module>
main()
File “C:\GTK\project\pr2\python.py”, line 314, in main
gtk.main()
File “C:\GTK\project\pr2\python.py”, line 61, in fillTextList
mod.clear()
File “C:\GTK\project\pr2\python.py”, line 15, in showText
textName=m
gmorgunov
Самое простое - это проверять 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()
diduz
спасибо помогло
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB