Seite 1 von 1

Frame neu laden

Verfasst: Freitag 15. April 2005, 13:02
von langeLeitung
Hallo!

Wie kann ich einen Frame neu laden?
Der Frame ließt Variablen aus einer Datei. Diese Datei wird von einem Popup-Fenster geändert. Wenn sich dieses Fenster schließt soll der Frame neu aufgerufen werden, damit er die aktuellen Variablen einließt.

Vielen Dank für die Hilfe und ein schönes Wochenende!

Verfasst: Freitag 15. April 2005, 13:48
von mawe
Hi!

Sorry, ich versteh's nicht ganz. Dein Frame liest Daten? Meines kann das nicht :wink:.
Sags bitte mal genauer, willst Du Daten in einem Entry oder Label anzeigen? Was genau ist das Problem?

Gruß, mawe

Verfasst: Freitag 15. April 2005, 15:21
von Leonidas
Ich vermute mal folgendes:
Das Frame wird erstellt. Danach werden die Widgets auf dem Frame mit Daten gefüllt (aus dieser Datei). Danach wird ein Popup geöffnet, das die Daten verändert. Nun will langeLeitung, das das Frame die Daten aktualisiert, also die Datei neu einliest. Scheint mir persönlich aber kein Problem zu sein, man setzt einfach die Werte in den Widgets neu...

Verfasst: Freitag 15. April 2005, 15:38
von mawe
Na gut, dann mal ein kleines Beispiel:

Code: Alles auswählen

from Tkinter import *
import tkSimpleDialog

def change():
    new = tkSimpleDialog.askstring("Na?","Na gib schon den neuen Wert ein!")
    l.configure(text=new)

root = Tk()
f = Frame()
f.pack()
l = Label(f,text="0")
l.pack()
Button(text="Change",command=change).pack()
root.mainloop()

Verfasst: Montag 18. April 2005, 09:30
von langeLeitung
Hallo!

Vielen Dank für eure Antworten. Ja, ich denke wohl noch nicht objektorientiert :oops:
OK, nun habe ich eine Funktion innerhalb der Klasse, die ich "Update" nenne. In Update werden mit Label und grid die Werte aus meiner Datei in ein Frame geschrieben.

Nun habe ich noch folgendes Restproblem:
Die neuen Wörter werden wirklich über die Alten geschrieben. Wir also ein kurzes Wort eingefügt und vorher stand ein Langes an der Position, so kann man Reste des alten Wortes noch immer sehen. Das Neue verdeckt das Alte nicht vollständig.

Kann ich die Inhalte einer Zelle der "Grid-Tabelle" geziehlt löschen?

Verfasst: Montag 18. April 2005, 13:39
von mawe
Hi!

Hab ich schon mal erwähnt dass ich nicht verstehe was Du meinst? :)
langeLeitung hat geschrieben: In Update werden mit Label und grid die Werte aus meiner Datei in ein Frame geschrieben.
Ok, heisst das, Du hast in einem Frame mehrere Labels (oder eines), die die Werte anzeigen?
langeLeitung hat geschrieben: Die neuen Wörter werden wirklich über die Alten geschrieben. Wir also ein kurzes Wort eingefügt und vorher stand ein Langes an der Position, so kann man Reste des alten Wortes noch immer sehen. Das Neue verdeckt das Alte nicht vollständig.
Kannst Du bitte zeigen, wie Du die Wörter auf die Labels (oder wohin auch immer) schreibst. Wenn Du's mit configure machst wie ich's gezeigt hab, sollte das nicht passieren.

PS: Nochmal: Zeig Code! :wink:

Gruß, mawe

Verfasst: Montag 18. April 2005, 14:04
von langeLeitung
Also... hier mein Code:

Code: Alles auswählen

datei = open('kopfdaten.txt', 'r')		
w=Label(self.frame3, text=(datei.readline().rstrip("\n")))
w.grid(row=0, column=1)
Die Zeilen stehen in der Funktion "Update". Wenn "datei" verändert wurde, rufe ich die funktion erneut auf. Das klatscht die Texte übereinander, darum kann man Fragmente von längeren Worten noch sehen, wenn ein kurzes Wort eingefügt wird...

@mawe: Warum verstehst Du mich eigentlich nicht :roll:

Verfasst: Montag 18. April 2005, 14:27
von mawe
Hi!

Warum erzeugst Du ein neues Label? Lass doch einfach das alte stehen und ändere nur den Text darauf.

Warum ich Dich nicht verstehe?
Anfangs hast Du geschrieben, dass Dein Frame Variablen einliest. Sowas kann ein Frame aber nicht. Dann hast Du irgendetwas von Label erwähnt, na gut, da war's dann eh halbwegs klar, was Du meinst (mit Betohnung auf halbwegs :wink:). Wie Du siehst hab ich ja richtig geraten :)

Gruß, mawe

Verfasst: Dienstag 19. April 2005, 06:31
von langeLeitung
Hallo mawe!

Wir kommen der Sache näher :D

Bitte verrate mir noch, wie ich den Text eines Labels ändern kann, ohne eine neues Label zu erstellen.

Vielen Dank
Stefan


PS: Mittlerweile habe ich das Buch "Python GE-PACKT". Ich hoffe, meine Fragen werden nun seltener und besser...

Verfasst: Dienstag 19. April 2005, 08:54
von Gast
OK, jetzt weiss ich es.

Code: Alles auswählen

w.config(text="neuer Text")

Verfasst: Dienstag 19. April 2005, 10:50
von mawe
Hi!

Ein kurzer Blick auf mein Beispiel hätte die Frage auch beantwortet :wink:
Aber man lernt eh mehr wenn man selbst tüftelt :)

Gruß, mawe