Hallo zusammen,
eine kurze, sicher ziemlich häufig gestellte Frage, auch wenn ich sie hier noch nicht gefunden habe...
Wie kann ich am einfachsten eine Listbox erzeugen, deren Zeilen z.B. abwechselnd einen farbigen Hintergrund haben? Mir gelingt dies derzeit nur mit Listboxen, in denen bereits Einträge sind. Ich brauche dies aber für eine leere Listbox.
Entweder suche ich nach den falschen Begriffen oder ich habe gerade ein ziemliches Brett vor dem Kopf
Gruß,
DaFe4u
"gestreifte" Listbox
so, ich hab mal schnell was gebastelt, sehr unsauber...aber das ist ja jetzt egal...die maus-funktionen beim klick auf ein label musst du noch selbst
hinzufügen
### edit
den parameter entry_num solltest du am besten aus der ganzen klasse streichen...sie war nur zum testen vorgesehen
hinzufügen
Code: Alles auswählen
#! /usr/bin/python
# -*- coding: utf-8 -*-
import Tkinter
class TkColorListbox(Tkinter.Frame):
def __init__(self, parent, entrys_num, bg1, bg2,
fg1, fg2):
if bg1 == None:
self.bg1 = "#ffffff"
else:
self.bg1 = bg1
if bg2 == None:
self.bg2 = "#cccccc"
else:
self.bg2 = bg2
if fg1 == None:
self.fg1 = "#000000"
else:
self.fg1 = fg1
if fg2 == None:
self.fg2 = "#000000"
else:
self.fg2 = fg2
Tkinter.Frame.__init__(self, parent)
self["relief"] = "sunken"
self["borderwidth"] = 2
self["bg"] = "#ffffff"
entrys = []
act = 0
for i in range(0, entrys_num):
entrys.append(Tkinter.Label(self, text="hallo welt"))
if act == 0:
entrys[i]["bg"] = self.bg1
entrys[i]["fg"] = self.fg1
act = 1
elif act == 1:
entrys[i]["bg"] = self.bg2
entrys[i]["fg"] = self.fg2
act = 0
entrys[i].pack()
if __name__ == "__main__":
root = Tkinter.Tk()
box = TkColorListbox(root, 5, None, None, None, None)
box.pack()
root.mainloop()
den parameter entry_num solltest du am besten aus der ganzen klasse streichen...sie war nur zum testen vorgesehen