Seite 1 von 1
Sich aktualisierende Labels
Verfasst: Montag 11. Oktober 2010, 19:38
von nevergod
Guten tag liebe python gemeinde
Ich programmiere gerade ein kleines spiel.
Nun würde ich gerne eine Statbox im mainfenster haben.
Dachte mir ich mache das einfach via Labels und .grid zu ner kleinen tabelle und die ganzen stats als variablen die dann in den labels angezeigt werden.
Damit die Variablen aktuell bleiben sollen die dateien wo die stats gespeichert sind permament neugeladen (oder alle 30 sekunden) werden (open, x = f, close etc etc etc)
Soweit so gut, nun sind labels aber soweit ich weiß nix dynamisches und ich müsste trotzdem alles neustarten damit es aktualisiert wird!
Gibt es sonst noch ne möglichkeit das zu regeln? (ohne das man alles neustarten muss...)?
mit freundlichen Grüßen,
NeverGod
Re: Sich aktualisierende Labels
Verfasst: Montag 11. Oktober 2010, 20:16
von BlackJack
@nevergod: Ich würde eine Funktion schreiben die per `after()`-Methode alle 30 Sekunden aufgerufen wird und die Labels mit den Werten aktualisiert.
Re: Sich aktualisierende Labels
Verfasst: Montag 11. Oktober 2010, 20:32
von nevergod
bin leider noch ein neuling ^^ Wie würde das gehen? die after anweisung ist mir noch neu, entschuldigung.
Re: Sich aktualisierende Labels
Verfasst: Montag 11. Oktober 2010, 21:10
von BlackJack
@nevergod: `after()` ist keine Anweisung sondern eine Methode die es auf jedem `Tkinter`-Widget gibt. Der Methode gibst Du die Anzahl der Millisekunden und eine Funktion und (ungefähr) nach der angegebenen Anzahl von Millisekunden wird die Funktion dann von `Tkinter` aufgerufen.
Re: Sich aktualisierende Labels
Verfasst: Montag 11. Oktober 2010, 21:59
von nevergod
Also das was ich aktualiusiert haben will in while rein und mit after(300) versehen ja?
Vielen dank das werde ich versuchen ^^
Re: Sich aktualisierende Labels
Verfasst: Montag 11. Oktober 2010, 22:58
von BlackJack
@nevergod: Nein, bloss kein ``while``. Nur `after()`. Die Funktion zum aktualisieren kann an ihrem Ende ja selbst wieder den "Auftrag" geben nach einer Zeit aufgerufen zu werden.
Re: Sich aktualisierende Labels
Verfasst: Dienstag 12. Oktober 2010, 07:28
von wuf
Hallo nevergod
Hier ein kick off Versuch:
Code: Alles auswählen
import Tkinter as tk
UPDATE_TIME = 1000 # 1 Sek.
def update_label():
"""Aktualisiert das Label"""
my_label.config(text=app_win.counter)
app_win.counter += 1
app_win.after(UPDATE_TIME, update_label)
app_win = tk.Tk()
app_win.counter = 0
my_label = tk.Label(app_win, relief='raised', width=10)
my_label.pack()
update_label()
app_win.mainloop()
Gruss wuf

Re: Sich aktualisierende Labels
Verfasst: Dienstag 12. Oktober 2010, 12:40
von nevergod
ich glaube ich habe es verstanden
Vielen dank!
edit//
Code: Alles auswählen
def namestat():
x=open("bin/account/1.txt",'r')
namestat=x.readline()
x.close()
namelabel1=Label(main,text="%s" % namestat)
def update_label():
x=open("bin/account/1.txt",'r')
namestat=x.readline()
x.close()
namelabel1.config(text=namestat)
def namestat():
x=open("bin/account/1.txt",'r')
namestat=x.readline()
x.close()
namelabel1.after(1000,update_label)
habe das jetzt so gemacht aber wenn ich die 1.txt verändere updated sich mein label nicht. :S
edit// hab den fehler gefunden ^^ das updaten selber war nicht in der definition, nun klappt alles wunderbar!! DANKE!