Hallo zusammen,
Ich bastle gerade ein Tkinter Fenster das mir zur Steuerung dienen soll. Also ich klicke z.B. in meinem Hauptfenster auf ein Wort in einer Listbox und es soll sich daraufhin ein entsprechendes Fenster Öffnen. Nun gäbe es zwei alternativen die mich interessieren:
a) gibt es eine Möglichkeit das es trotz eines erneuten Klickens auf das Wort nicht nochmal das zweite Fenster auf geht, z.B. dass das zweite Fenster einfach wieder aktiviert wird
b) ich würde es auch gerne mal so probieren, dass beim klicken auf das Wort das zweite Fenster aufgeht und gleichzeitig das Wort aus der Liste verschwindet. Soweit kein Problem. Aber wie kann ich beim schließen des zweiten Fensters das Wort wieder in der Liste erscheinen lassen.
Bin für jede Hilfe sehr dankbar
Gruß
lambert
Nur ein einziges Fenster?
O.k. Frage a) war blöd. Dafür hab ich jetzt auch schon Threads gefunden. Also Childwindow eben.
Aber Frage b) brennt mir noch auf der Zunge. Gibt es eine Methode in tkinter die auf jedenfall noch ausgeführt wird wenn das zweite Fenster geschlossen wird. Darin würde ich dann die Listebox wieder füllen.
Aber Frage b) brennt mir noch auf der Zunge. Gibt es eine Methode in tkinter die auf jedenfall noch ausgeführt wird wenn das zweite Fenster geschlossen wird. Darin würde ich dann die Listebox wieder füllen.
- Mawilo
- User
- Beiträge: 454
- Registriert: Sonntag 22. Februar 2004, 10:58
- Wohnort: Sachsen
- Kontaktdaten:
Ich bin mir nicht sicher, ob ich dein Problem verstanden habe. Aber versuche doch mal wait_window() oder wait_variable().
Ich glaube das ist es nicht ganz. Oder ich versteh es nicht.
Ich möchte in einer Listbox in Fenster A ein Wort erscheinen lassen nachdem ich Fenster B geschlossen habe. Also muss mein Programm irgendwie merken wenn sich Fenster B schließt.
Ich möchte in einer Listbox in Fenster A ein Wort erscheinen lassen nachdem ich Fenster B geschlossen habe. Also muss mein Programm irgendwie merken wenn sich Fenster B schließt.
Ich hab's nicht ausprobiert, aber kannst Du an Fenster `b` nicht einfach einen Handler für's Fenster-Schliessen binden?
Die `handler`-Funktion kann dann das Wort wieder eintragen und `window_b.destroy()` aufrufen.
Code: Alles auswählen
window_b.protocol("WM_DELETE_WINDOW", handler)
- Mawilo
- User
- Beiträge: 454
- Registriert: Sonntag 22. Februar 2004, 10:58
- Wohnort: Sachsen
- Kontaktdaten:
Ich habe hier ein kurzes Beispiel (jedenfalls so habe ich es verstanden
):
Kannst du damit etwas anfangen?
Stephan

Code: Alles auswählen
# -*- coding: iso-8859-15 -*-
import Tkinter as tk
class Test:
def __init__(self):
self.root = tk.Tk()
self.listbox = tk.Listbox(self.root)
self.listbox.pack()
self.listbox.insert(tk.END, 'ein Wort')
self.listbox.bind('<Double-Button-1>', self.fenster2)
self.root.mainloop()
def fenster2(self, event = None):
self.fenster = tk.Toplevel()
self.label = tk.Label(self.fenster, text = 'wenn das Fenster \
geschlossen wird, passiert was')
self.label.pack()
self.endeButton = tk.Button(self.fenster,
text = 'Schliessen',
command = self.ende)
self.endeButton.pack()
self.root.wait_window(self.fenster)
self.neuesWort()
def neuesWort(self):
self.listbox.delete(0, tk.END)
self.listbox.insert(tk.END, 'neues Wort')
self.listbox.insert(tk.END, 'noch ein Wort')
self.listbox.insert(tk.END, 'und noch ein Wort')
self.listbox.insert(tk.END, 'letztes Wort')
def ende(self):
self.fenster.destroy()
if __name__ == '__main__':
Test()
Stephan