Ich habe eine Applikation, in welcher ich Informationen in einem Listbox-widget anzeige. Nun werden allerdings periodisch kleine Teile des GUIs up-ge-dated und ich habe nicht herausgefunden, wie ich den Text der einzelnen Zeilen auslesen und verändern kann....
Im Moment regeneriere ich die Liste bei jedem Callback-Aufruf, was einerseits ineffizient ist (ich möcht ja nur ein paar Elemente verändern), und anderseits ja alle Status-Informationen (selection, item-config etc) verloren gehen...
Weiss jemand, wie man auf den Text der einzelnen Items zugreifen kann um diesen zu verändern ?
MfG
hier ein kleiner Beispiel-Code um das Problem zu illustrieren
Code: Alles auswählen
import Tkinter as tk,tkFont,random
class win (tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.m_font= tkFont.Font(family='Courier New',size=10)
self.m_list= tk.Listbox(self,width=30,height=30,font=self.m_font)
self.m_list.pack()
self.m_texts=[]
self.m_counters=[]
cols=['red','green','blue','yellow']
for i,blah in enumerate(['ett','tva','tre','fyra','fem','sex','sjuu']):
space= ' '.join(['' for j in range(15-len(blah))])
num= random.randint(10,100)
self.m_list.insert(tk.END,'%s%d'% (blah+space,num) )
self.m_list.itemconfigure(i,background=cols[i%len(cols)])
self.m_texts.append( blah+space )
self.m_counters.append( num )
self.after(1000,self.cb)
def cb(self):
for i in range(len(self.m_texts)):
if i%2==0: continue
self.m_list.delete(i)
self.m_counters[i]+=1
self.m_list.insert(i,'%s%d'% (self.m_texts[i],self.m_counters[i]) )
self.after(1000,self.cb)
w=win()