Heute wollte ich das Thema noch mal angehen, aber auch beim zweiten Versuch bin ich gescheitert.
Es ist nun zwar möglich, direkt über die Tastatur nach einem Namen zu suchen, jedoch wird noch immer nicht nach dem Begriff gesucht den ich in das Textfeld eingeben.
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import gtk
import csv
#Basisklasse
class Base:
# definiert das beenden
def destroy(self, widget, data=None):
gtk.main_quit()
# visibility determined by state matching active toggle buttons
def visible_func(self, model, iter, data):
query = self.textbox.get_text()
value = model.get_value(iter, 0)
if query == "":
return True
elif query in value.lower():
return True
return False
def on_entry_refilter(self, widget, data=None):
self.modelfilter.refilter()
def load(self, widget):
bankfile = [["transactionId","localBankCode","localAccountNumber","remoteBankCode","remoteAccountNumber","date","valutadate","value_value","value_currency","localName","remoteName","remoteName1","purpose","purpose1","purpose2","purpose3","purpose4","purpose5","purpose6","purpose7","purpose8","purpose9","purpose15","purpose11","category","category1","category2","category3","category4","category5","category6","category7"],["","55515555","38163555","98757895798","654364356","2513/59/12","2513/59/12","155.55","EUR","tester","Peter","","ReferenzNOTPROVIDED","Verwendungszweck","Bestellung","11.59.13","","","","","","","","","","","","","","","",""],["","55515555","38163555","987578975","53465436354","2513/59/12","2513/59/12","43.55","EUR","tester","Ralf","","geschenk","","","","","","","","","","","","","","","","","","",""],["","55515555","38163555","97857895","54365436543","2513/59/12","2513/59/12","159.55","EUR","tester","Ines","","bestellung","","","","","","","","","","","","","","","","","","",""],["","55515555","38163555","9857895","54365436543","2513/59/13","2513/59/13","-7.94","EUR","tester","Frank","","2999552961781317","","","","","","","","","","","","","","","","","","",""],["","55515555","38163555","98578957","54365436543","2513/59/13","2513/59/13","-15.91","EUR","tester","Jonas","","2999519522912918","","","","","","","","","","","","","","","","","","",""],["","55515555","38163555","78957895","5465436354","2513/59/13","2513/59/13","-75.25","EUR","tester","Gerd","","2617393541155393","","","","","","","","","","","","","","","","","","",""]]
if True:
count = 0
trans_list = []
self.searchable_row_content = []
for i in bankfile:
trans_list.append(i)
count += 1
if count == 1:
self.liststore = gtk.ListStore(*[type(y) for y in i])
self.modelfilter = self.liststore.filter_new()
else:
self.liststore.append([y for y in i])
self.searchable_row_content.append(i[10])
self.modelfilter.set_visible_func(self.visible_func, self.searchable_row_content)
self.liststore_sortable = gtk.TreeModelSort(self.liststore)
self.treeview = gtk.TreeView(self.liststore_sortable)
self.treeview.set_model(self.modelfilter)
cell = gtk.CellRendererText()
cell.set_property('editable', True)
for n, i in enumerate(trans_list[0]):
print n, i
column = gtk.TreeViewColumn(i, cell, text=n)
self.treeview.append_column(column)
self.treeview.set_search_column(10)
self.treeview.set_search_entry(self.textbox)
self.main_sw.add_with_viewport(self.treeview)
self.window.show_all()
def __init__(self):
#Fenster definieren
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_position(gtk.WIN_POS_CENTER)
self.window.set_size_request(600, 400)
self.window.set_title("This is the Title")
#Load Knopf anlegen
self.loadbutton = gtk.Button("Load")
self.loadbutton.connect("clicked", self.load)
#textbox
self.textbox = gtk.Entry()
self.textbox.connect("changed", self.on_entry_refilter)
#Beenden Knopf anlegen
self.exitbutton = gtk.Button("EXIT")
self.exitbutton.connect("clicked", self.destroy)
#scrolled window box
self.main_sw = gtk.ScrolledWindow()
#Hauptbox
self.mainbox = gtk.VBox()
self.mainbox.pack_start(self.textbox, expand=False)
self.mainbox.pack_start(self.loadbutton, expand=False)
self.mainbox.pack_start(self.main_sw)
self.mainbox.pack_start(self.exitbutton, expand=False)
#Hauptfenster
self.window.add(self.mainbox)
self.window.show_all()
self.window.connect("destroy", self.destroy)
def main(self):
gtk.main()
if __name__ == "__main__":
base = Base()
base.main()