Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » pyGTK как удалить все элементы из combobox? [RSS Feed]

#1 Авг. 23, 2010 15:10:09

diduz
От:
Зарегистрирован: 2010-08-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

pyGTK как удалить все элементы из combobox?

Здраствуйте,такая проблема:
создаю комбобокс
textCombo = gtk.combo_box_new_text()
заполняю его с помощью
textCombo.append_text()
как его очистить если информацию для заполнения я беру из бд и не знаю сколько там элементов, тоесть
combobox.remove_text (index) использовать не могу.



Офлайн

#2 Авг. 23, 2010 16:35:09

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

pyGTK как удалить все элементы из combobox?

Можно очистить 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()



Офлайн

#3 Авг. 23, 2010 16:50:14

diduz
От:
Зарегистрирован: 2010-08-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

pyGTK как удалить все элементы из combobox?

Спасибо большое



Офлайн

#4 Авг. 23, 2010 18:49:49

diduz
От:
Зарегистрирован: 2010-08-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

pyGTK как удалить все элементы из combobox?

я правильно понимаю, что если после вызова функции очищающеё модель снова добавлять в комбобокс текстовую информацию то потом можно будет
воспользоваться функцией

   
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



Офлайн

#5 Авг. 24, 2010 10:59:10

gmorgunov
От:
Зарегистрирован: 2008-10-15
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

pyGTK как удалить все элементы из combobox?

Самое простое - это проверять 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()



Офлайн

#6 Авг. 26, 2010 12:55:18

diduz
От:
Зарегистрирован: 2010-08-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

pyGTK как удалить все элементы из combobox?

спасибо помогло



Офлайн

  • Начало
  • » GUI
  • » pyGTK как удалить все элементы из combobox?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version