[Python] R: Re: R: Re: Gtk - ListView - Catturare la selezione di una riga e lanciare una funzione.
Marco Fochesato
marcofoc a libero.it
Lun 3 Maggio 2010 21:47:49 CEST
> altro, č l'unica cosa che mi viene in mente con le informazioni che ho -
> se il problema non č quello, mi sa che senza un esempiuccio funzionante
> del problema non so aiutarti).
>
Ecco l'esempio funzionante. Chiedo perdono ai mostri che leggono la
lista per li codice che posto... sono un novello.
Sorvolate dal notare il modo in cui filtro i dati dei "prodotti". Nella
realtā uso il parametro che mi dā la selezione del fornitore per
estrarre i dati giā filtrati dal database con un comando SQL.
import pygtk
pygtk.require('2.0')
import gtk
class Programma:
def __init__(self, principale):
self.mioPrincipale = principale
self.finestraprincipale =
gtk.Window(gtk.WINDOW_TOPLEVEL)
self.finestraprincipale.connect("delete_event",
self.delete_event)
self.finestraprincipale.connect("destroy", self.destroy)
self.finestraprincipale.set_size_request(300, 300)
self.finestraprincipale.set_title("PROGRAMMA PROVA LISTVIEW")
self.framegenerale = gtk.HBox(False,0)
self.finestraprincipale.add(self.framegenerale)
self.quadroprodotti = gtk.VBox (True, 1)
self.scrollwinfornitori = gtk.ScrolledWindow()
self.scrollwinfornitori.set_size_request(100, 200)
self.scrollwinfornitori.set_policy(gtk.POLICY_AUTOMATIC,
gtk.POLICY_AUTOMATIC)
self.listafornitor = gtk.ListStore(str, str)
self.listafornitori = gtk.TreeView(self.listafornitor)
self.listafornitori.set_rules_hint(1)
self.colonnaidfornitore = gtk.TreeViewColumn("idfornitore")
self.colonnanomefornitore = gtk.TreeViewColumn("Fornitore")
self.listafornitori.append_column(self.colonnanomefornitore)
self.cell_fornitori = gtk.CellRendererText()
self.colonnanomefornitore.pack_start(self.cell_fornitori, True)
self.colonnanomefornitore.add_attribute(self.cell_fornitori,
'text', 1)
self.quadroprodotti.add(self.scrollwinfornitori)
self.scrollwinfornitori.add_with_viewport(self.listafornitori)
self.scrollwinfornitori.set_shadow_type(gtk.SHADOW_ETCHED_IN)
self.scrollwinprodotti =gtk.ScrolledWindow()
self.scrollwinprodotti.set_size_request(100, 200)
self.scrollwinprodotti.set_policy(gtk.POLICY_AUTOMATIC,
gtk.POLICY_AUTOMATIC)
self.listaprodott = gtk.ListStore(str, str)
self.listaprodotti= gtk.TreeView(self.listaprodott)
self.listaprodotti.set_rules_hint(1)
self.colonnaidprodotto = gtk.TreeViewColumn("IdProdotto")
self.colonnanomeprodotto = gtk.TreeViewColumn("Prodotto")
self.listaprodotti.append_column(self.colonnanomeprodotto)
self.cell_prodotti = gtk.CellRendererText()
self.colonnanomeprodotto.pack_start(self.cell_prodotti, True)
self.colonnanomeprodotto.add_attribute(self.cell_prodotti,
'text', 0)
self.quadroprodotti.add(self.scrollwinprodotti)
self.scrollwinprodotti.add_with_viewport(self.listaprodotti)
self.scrollwinprodotti.set_shadow_type(gtk.SHADOW_ETCHED_OUT)
self.quadroricetta = gtk.VBox(False, 1)
self.framegenerale.add(self.quadroprodotti)
self.framegenerale.show_all()
self.finestraprincipale.show_all()
rows = [("1","Tizio"), ("2","Caio"), ("3","Sempronio")]
for row in rows:
nomefornitore = str(row[1])
idfornitore = str(row[0])
self.listafornitor.append([idfornitore, nomefornitore])
treeselection=self.listafornitori.get_selection()
treeselection.set_mode(gtk.SELECTION_SINGLE)
treeselection.set_select_function(self.stampalistaprodotti,
iter)
def stampalistaprodotti(self, evento, dato):
self.listaprodott.clear()
treeiter = self.listafornitor.get_iter(evento)
idfornitoreselezionato = self.listafornitor.get_value(treeiter,
0)
rows = [("1", "1", "Mele"),("2", "4", "Pollo"),("3", "7",
"Carote")]
for row in rows:
idfornitore = str(row[0])
idprodotto = str(row[1])
nomeprodotto = str(row[2])
if idfornitore == idfornitoreselezionato:
self.listaprodott.append([nomeprodotto, idprodotto])
def delete_event(self, widget, data=None):
return gtk.FALSE
def destroy(self, widget, data=None):
return gtk.main_quit()
def main(self):
gtk.main()
if __name__ == "__main__":
radice=""
first = Programma(radice)
first.main()
Maggiori informazioni sulla lista
Python