Eigenschaften eines Labels nachträglich ändern??

Fragen zu Tkinter.
Antworten
nArF

hi,
mein kollege hatte mich vor kurzem gefragt, ob ich ihm bei einem kleinen programm helfen koenne, welches er mit python programmieren sollte, eine 7-Segment Anzeige (wie bei Digitaluhren etc.)

auf knopfdruck sollen also die zahlen auf dem display erscheinen.
Also habe ich mir gedacht, nehmen wir fuer die einzelnen segmente einfach labelfelder von denen wir auf knopfdruck die hintergrundfarbe ändern (mit java, vb alles kein thema), aber ich weiss nicht, wie ich mit python auf das erstellte Labelobjekt zugreifen kann...
finde auch leider keine guten beispielaufgaben zum nachträglichen ändern.
Bitte helft mir... .p

Hier der code: (Das programm soll so unkompliziert wie möglich gehalten werden)

Code: Alles auswählen

import Tkinter
from Tkconstants import *

def btn1():
    print "eigtl. sollen sich labelfarben ändern, dass eine 1 ensteht!"
 
hmm = "grey"
tk=Tkinter.Tk()
block=Tkinter.Frame(tk)
block2=Tkinter.Frame(tk)
block.pack(side="left")
block2.pack(side="left")

button_a5=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_a5.grid(row=0, column=0)
button_a4=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_a4.grid(row=1, column=0)
button_a3=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_a3.grid(row=2, column=0)
button_a2=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_a2.grid(row=3, column=0)
button_a1=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_a1.grid(row=4, column=0)
button_b5=Tkinter.Label(block, width=4, bg="grey", text=" ")
button_b5.grid(row=0, column=1)
button_b4=Tkinter.Label(block, width=4, bg="grey", text=" ")
button_b4.grid(row=1, column=1)
button_b3=Tkinter.Label(block, width=4, bg="grey", text=" ")
button_b3.grid(row=2, column=1)
button_b2=Tkinter.Label(block, width=4, bg="grey", text=" ")
button_b2.grid(row=3, column=1)
button_b1=Tkinter.Label(block, width=4, bg="grey", text=" ")
button_b1.grid(row=4, column=1)
button_c5=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_c5.grid(row=0, column=2)
button_c4=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_c4.grid(row=1, column=2)
button_c3=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_c3.grid(row=2, column=2)
button_c2=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_c2.grid(row=3, column=2)
button_c1=Tkinter.Label(block, width=3, bg="grey", text=" ")
button_c1.grid(row=4, column=2)

button_1=Tkinter.Button(block2, width=2, bg="grey", text="1", command=btn1)
button_1.grid(row=0, column=3)
button_2=Tkinter.Button(block2, width=2, bg="grey", text="2")
button_2.grid(row=1, column=3)
button_3=Tkinter.Button(block2, width=2, bg="grey", text="3")
button_3.grid(row=2, column=3)
button_4=Tkinter.Button(block2, width=2, bg="grey", text="4")
button_4.grid(row=3, column=3)
button_5=Tkinter.Button(block2, width=2, bg="grey", text="5")
button_5.grid(row=4, column=3)
button_6=Tkinter.Button(block2, width=2, bg="grey", text="6")
button_6.grid(row=0, column=4)
button_7=Tkinter.Button(block2, width=2, bg="grey", text="7")
button_7.grid(row=1, column=4)
button_8=Tkinter.Button(block2, width=2, bg="grey", text="8")
button_8.grid(row=2, column=4)
button_9=Tkinter.Button(block2, width=2, bg="grey", text="9")
button_9.grid(row=3, column=4)
button_0=Tkinter.Button(block2, width=2, bg="grey", text="0")
button_0.grid(row=4, column=4)

tk.mainloop() 
ich habe auch mal probier z.B.

button_b3=Tkinter.Label(block, width=2, bg="red", text=" ")
button_b3.grid(row=2, column=1)

ausführen zu lassen, wenn man auf einen button drückt, hierbei erkennt man aber, dass pythonm einfach nur ein neues Label (mit demselben namen?) erstellt und drüber plaziert, dass ich ja nciht sinn der sache.

Danke fuer eure Mühen

mfg Marc Werner

edit by Milan: code-Tgas eingefügt... bitte das nächste mal dran denken, es ist lästig Quellcode ohne sie zu lesen!
Gast

soo, werde es einfach mit ner variablen fur die hintergrundfarbe versuchen, scheint wohl zu gehen, aber das ist doch mist, wenn man dann 15 verschiedene variablen hat...
nArF

so jetz habe ich die hintergrundfarben als variable, leider kann man die farbe nachtröglich immernoch nciht ändern, denn er behält die variablenzuweisung von der erstellung des objektes.

Ich bräuchte also so etwas wie eine repaint() funktion in java....oO

plz help the nubs!! .p
MightyJ

Hallo Marc Werner!

Für den Button definierst du dir ja eine Callback-Funktion. In dieser Funktion kannst du die Eigenschaften des Labels dann sehr leicht ändern. Das geht wie folgt:

Code: Alles auswählen

labelname["eigenschaft"] = "Neuer Wert"  #ggf. ohne ""

#Beispiel zum Ändern des Textes und der Farbe:

def callback(self):
    "Callback-Methode des Buttons"
    labelname["text"] = "Neuer Text"
    labelname["bg"]   = "#ccccff"
Ich hoffe, dass das das ist, was du meintest.

MfG
MightyJ
N17R0
User
Beiträge: 53
Registriert: Samstag 6. März 2004, 23:41

... oder um die Sache einfach zu halten:

bsp.:

Code: Alles auswählen

Labelvariable.config(bg='red')
Greetz
Gast

jo thx, habt mir beide sehr geholfen .p
Antworten