2010-10-31 16 views
1

Si j'ai une liste déroulante dans pyGTK et que je voudrais définir une liste de chaînes, puis en cliquant sur l'une activer une commande comment je le ferais?PyGtk - Activer une zone de liste déroulante

Au moment j'ai:

self.combo_key = gtk.Combo() 
    self.combo_key.set_popdown_strings(self.keys) 
    self.combo_key.entry.set_text(db.keys()[0]) 
    self.combo_key.entry.connect("activate", self.key_sel) 

Mais "activate" appelle seulement après sélection, puis en appuyant sur Entrée. Je reçois également un avertissement de désapprobation pour gtk.Combo() mais je ne trouve pas d'aide sur l'utilisation gtk.ComboBoxEntry()

Toute aide les gars?

Répondre

2

Essayez d'utiliser un gtk.ComboBox au lieu de gtk.Combo, car ce dernier est déconseillé en faveur du premier. Pour initialiser, vous pouvez vous codez comme:

liststore = gtk.ListStore(gobject.TYPE_STRING) 
for key in self.keys: 
    liststore.append((key,)) 
combobox = gtk.ComboBox(liststore) 
cell = gtk.CellRendererText() 
combobox.pack_start(cell, True) 
combobox.add_attribute(cell, 'text', 0) 

Maintenant, vous connecter au signal changed du combobox et utiliser sa méthode get_active() pour demander l'élément sélectionné.

Comme vous pouvez le deviner à partir de cette explication, le ComboBox n'est pas fait exactement dans ce but. Vous voulez probablement utiliser gtk.Menu.