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
Sich aktualisierende Labels
@nevergod: Ich würde eine Funktion schreiben die per `after()`-Methode alle 30 Sekunden aufgerufen wird und die Labels mit den Werten aktualisiert.
@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.
@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.
Hallo nevergod
Hier ein kick off Versuch:
Gruss wuf
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()
Take it easy Mates!
ich glaube ich habe es verstanden
Vielen dank!
edit//
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!
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)
edit// hab den fehler gefunden ^^ das updaten selber war nicht in der definition, nun klappt alles wunderbar!! DANKE!