Hallo zusammen!
Zuerst - bin ein Python-Frischling und fürchte das ist eine Frage die schon irgendwo mal beantwortet wurde. Habe aber ums verrecken nichts gefunden.
Ich habe ein Wörterbuch-Programm geschrieben, in welchem man Vokabeln speichern kann. Die eingegebenen Vokabeln werden in einer txt-Datei gespeichert. Über den einfachen Print-Befehl zeigt er sie mir auch wieder an. Möchte aber, dass sich, wenn man auf "Liste anzeigen" klickt, ein neues Fenster öffnet und die Vokabelliste darin angezeigt wird. Wie mache ich das?
Hier mal das Programm. Weiß nicht, welche Stellen für diese Funktion alle wichtig sind, deswegen zeige ich es lieber mal ganz . (Habe es übrigens natürlich nicht komplett alleine geschrieben, das "Grundgerüst" stammt von meinem Info-Lehrer ):
[wiki]Paste/134[/wiki]
Edit (Leonidas): Code in Python-Tags gesetzt.
Edit (Leonidas): Code in Wiki ausgelagert.
Inhalt von txt-Datei in TK-Fenster anzeigen
- Mawilo
- User
- Beiträge: 452
- Registriert: Sonntag 22. Februar 2004, 10:58
- Wohnort: Sachsen
- Kontaktdaten:
Hallo -Pea-,
zuerst solltest du dir überlegen, ob du die Vokabeln in einem Textfenster oder in einer Liste anzeigen lassen möchtest.
Um in einem Textfenster etwas einzufügen, kannst du
verwenden (der index wird mit zeile.spalte angegeben also z.B. 1.0). Näheres kannst du z.B. hier nachlesen.
Du hast auch die Möglichkeit, die Vokabeln in einer Listbox auszugeben. Dort werden die Einträge auch mit
eingefügt. Der Index besteht aber nur aus einer Zahl (oder aus einem Schlüsselwort wie z.B. END). Näheres zu Listboxen findest du hier.
Wenn du nicht weiter kommst, dann schreibe genau, was dir unklar ist. Bei einer so allgemeinen Frage ist schwer zu antworten.
Um überhaupt erst mal ein neues Fenster aufzurufen, schreibe ich mir immer eine neue Klasse. In deinem Beispiel könnte das ungefähr so aussehen (nicht getestet):
Diese Klasse rufst du aus dem Hauptprogramm auf.
Stephan
zuerst solltest du dir überlegen, ob du die Vokabeln in einem Textfenster oder in einer Liste anzeigen lassen möchtest.
Um in einem Textfenster etwas einzufügen, kannst du
Code: Alles auswählen
textfenster.insert(index,text)
verwenden (der index wird mit zeile.spalte angegeben also z.B. 1.0). Näheres kannst du z.B. hier nachlesen.
Du hast auch die Möglichkeit, die Vokabeln in einer Listbox auszugeben. Dort werden die Einträge auch mit
Code: Alles auswählen
listbox.insert(index,item)
eingefügt. Der Index besteht aber nur aus einer Zahl (oder aus einem Schlüsselwort wie z.B. END). Näheres zu Listboxen findest du hier.
Wenn du nicht weiter kommst, dann schreibe genau, was dir unklar ist. Bei einer so allgemeinen Frage ist schwer zu antworten.
Um überhaupt erst mal ein neues Fenster aufzurufen, schreibe ich mir immer eine neue Klasse. In deinem Beispiel könnte das ungefähr so aussehen (nicht getestet):
Code: Alles auswählen
from Tkinter import *
from ScrolledText import *
class Vokabelliste:
def __init__(self,vokabeldatei):
self.vokdat = vokabeldatei
self.root = Toplevel()
self.fr01 = LabelFrame(self.root, text = 'Vokabelfenster')
self.fr01.pack()
self.textfenster = ScrolledText(self.fr01, width = 50, height = 15)
self.textfenster.pack()
self.vokabeln_einfuegen()
self.root.mainloop()
def vokabeln_einfuegen(self):
datei = file(self.vokdat,'r')
for line in datei:
self.textfenster.insert('end', line)
datei.close()
Stephan
Für ein neues Fenster bietet sich das Toplevel Widget an:
http://effbot.org/tkinterbook/toplevel.htm
http://effbot.org/tkinterbook/toplevel.htm
Also, mein neues Problem ist nicht unbedingt das neue Fenster, wenn ich den Befehl so schreibe
Mein Problem ist, wie kriege ich es hin, dass er den Inhalt von "self.Woerterbuch" nicht in Python selber schreibt (wie es ja bei dem einfachen Print-Befehl üblich ist), sondern dass er sie eben in diesem neuen Fenster anzeigt. Sorry, weiß nicht so recht wie ich das beschreiben soll
macht er ja ohne Probleme ein Fenster auf (benutze ja auch bei anderen Funktionen, zum Beispiel bei "Vokabel ändern" neue Fenster).def Liste_anzeigen(self):
self.fenster= Tk()
print self.Woerterbuch
Mein Problem ist, wie kriege ich es hin, dass er den Inhalt von "self.Woerterbuch" nicht in Python selber schreibt (wie es ja bei dem einfachen Print-Befehl üblich ist), sondern dass er sie eben in diesem neuen Fenster anzeigt. Sorry, weiß nicht so recht wie ich das beschreiben soll
- Mawilo
- User
- Beiträge: 452
- Registriert: Sonntag 22. Februar 2004, 10:58
- Wohnort: Sachsen
- Kontaktdaten:
Hmmm, du solltest vielleicht mal lesen, was ich geschrieben habe. Um in Tkinter etwas anzeigen zu können, musst du schon so etwas wie z.B. ein Textfenster oder eine Listbox definieren.
Stephan
Code: Alles auswählen
def Liste_anzeigen(self):
self.fenster= Toplevel()
self.textfenster = Text(self.fenster, width = 20, height = 15)
self.textfenster.pack()
self.textfenster.insert('end',self.Woerterbuch)
self.fenster.mainloop()
Arg, entschuldigung, habs irgendwie nicht beim ersten Versuch kapiert Habe schon so lange über das Problem nachgegrübelt, dass ich eben einfach den Wald vor lauter Bäumen nicht gesehen hab Ist ja eigentlich total simpel die Lösung ^^
Werds gleich mal ausprobieren!!!
EDIT: Es funktioniert!!!!!!!!!!!!! 1000 Dank nochmal!
Werds gleich mal ausprobieren!!!
EDIT: Es funktioniert!!!!!!!!!!!!! 1000 Dank nochmal!