J
JUAN ERNESTO FLORES BELTRAN
Hi you all,
I am developping a python application which connects to a database
(postresql) and displays the query results on a treeview. In adittion to
displaying the info i do need to implement filtering facility for all the
columns of the treestore/liststore model in order to allow the user an easy
search method to find the desired information.
The treestore is created with information related to cars, the columns are:
car_model car_year car_color car_type car_price
chevrolet 1998 white sedan 5.000 US$
ford 1996 blue sedan 3.000 US$
- - - - -
- - - - -
- - - - -
I have been able to allow filtering to only one column, an extract of my
code as follows:
------------------------------------------------------------------------------------------------------------------------
#treestore creation
self.treestore = gtk.TreeStore(str, str, str, str, str)
self.modelfilter = self.treestore.filter_new()
self.treeview=gtk.TreeView()
#append treestore columns
self.treestore.append(None, [self.model, self.year, self.color,
self.type, self.price]
#set treestore model to allow filtering by car_model column
self.modelfilter.set_visible_func(self.visible_cd, self.car_model)
#the function to filter the treestore
def visible_cb(self, treestore, iter, x)
return treestore.get_value(iter, 0) in x
#self.car_model is a list of items wich change according to user needs and
can be controlled by a #secundary treeview or a button this function is
not explained.
------------------------------------------------------------------------------------------------------------------------
The code mentioned above does work but i can only fllter by defining
criterias in the first column. To allow filtering to all the columns i do
need the following code to work:
-------------------------------------------------------------------------------------------------------------------------
treemodelfilter.set_modify_func(types, func, data=None)
def func(model, iter, column, user_data)
-------------------------------------------------------------------------------------------------------------------------
where types should be:
types = (str, str, str, str, str)
the function to allow filtering:
def visible_cb(self, treestore, column, iter, x)
return treestore.get_value(iter, column) in x
and the rest of the code never changes...however it is not woking. Any
suggestion about the code mention?? am i making mistakes?? where?? do i have
to pass the column number someway to the visible_cb function??? how??
can any of you suggest a code example to follow and find out how the
treeview must be coded in order to allow "multicolumn filtering"???
thanks in advance for your support..
Juan
I am developping a python application which connects to a database
(postresql) and displays the query results on a treeview. In adittion to
displaying the info i do need to implement filtering facility for all the
columns of the treestore/liststore model in order to allow the user an easy
search method to find the desired information.
The treestore is created with information related to cars, the columns are:
car_model car_year car_color car_type car_price
chevrolet 1998 white sedan 5.000 US$
ford 1996 blue sedan 3.000 US$
- - - - -
- - - - -
- - - - -
I have been able to allow filtering to only one column, an extract of my
code as follows:
------------------------------------------------------------------------------------------------------------------------
#treestore creation
self.treestore = gtk.TreeStore(str, str, str, str, str)
self.modelfilter = self.treestore.filter_new()
self.treeview=gtk.TreeView()
#append treestore columns
self.treestore.append(None, [self.model, self.year, self.color,
self.type, self.price]
#set treestore model to allow filtering by car_model column
self.modelfilter.set_visible_func(self.visible_cd, self.car_model)
#the function to filter the treestore
def visible_cb(self, treestore, iter, x)
return treestore.get_value(iter, 0) in x
#self.car_model is a list of items wich change according to user needs and
can be controlled by a #secundary treeview or a button this function is
not explained.
------------------------------------------------------------------------------------------------------------------------
The code mentioned above does work but i can only fllter by defining
criterias in the first column. To allow filtering to all the columns i do
need the following code to work:
-------------------------------------------------------------------------------------------------------------------------
treemodelfilter.set_modify_func(types, func, data=None)
def func(model, iter, column, user_data)
-------------------------------------------------------------------------------------------------------------------------
where types should be:
types = (str, str, str, str, str)
the function to allow filtering:
def visible_cb(self, treestore, column, iter, x)
return treestore.get_value(iter, column) in x
and the rest of the code never changes...however it is not woking. Any
suggestion about the code mention?? am i making mistakes?? where?? do i have
to pass the column number someway to the visible_cb function??? how??
can any of you suggest a code example to follow and find out how the
treeview must be coded in order to allow "multicolumn filtering"???
thanks in advance for your support..
Juan