Seite 1 von 1

2 Fenster, aber nur 1 darf bearbeitet werden

Verfasst: Mittwoch 2. April 2003, 17:07
von Tux
Hi @ll!

Wie immer bin ich im Tkinter!

Ich habe folgendes Problem (vereinfacht):

Ich habe ein Fenster mit einem Button! Sobald man auf diesen Button klickt, soll ein neues Fenster geöffnet werden! Wenn das neue Fenster geöffnet wurde, soll man nur auf dieses zugreifen können - das 1. Fenster darf nichts mehr machen! Im 2. Fenster soll wieder ein Button sein - klickt man auf diesen, so soll sich dieses 2. Fenster schließen und die im Fenster 1 wieder alles funktionieren! Wie geht das?

Ich hoffe iihr versteht mich!

Danke schon mal
ICH

Verfasst: Mittwoch 2. April 2003, 21:28
von hans
Hi Tux, sieht nicht gut aus. Daran haben wir uns schon mal die Zähne ausgebissen. Siehe hier http://python.sandtner.net/viewtopic.php?t=196

Bei deinem Namen könnte man doch eigentlich eher erwarten, dass du QT einsetzt. :wink:

Hans

Re: 2 Fenster, aber nur 1 darf bearbeitet werden

Verfasst: Mittwoch 2. April 2003, 22:07
von Voges
Hallo!

Also, wenn ich das richtig sehe, willst Du einen sog. 'modalen Dialog'. Sowas geht mit Tkinter natürlich auch, am einfachsten wohl mit der Klasse tkSimpleDialog.Dialog.
Kleines Beispiel:

Code: Alles auswählen

from Tkinter import *
import tkSimpleDialog

class modalerDialog(tkSimpleDialog.Dialog):
    def body(self, master):
        self.title("Ein modaler Dialog")
        Label(master,text='Ich bin ein modaler Dialog').pack()

def dialogOeffnen():
    modalerDialog(root)
  
root = Tk()
Button(root,text="modalen Dialog oeffnen",command=dialogOeffnen).pack()
root.mainloop()
Man leitet also immer von der Klasse tkSimpleDialog.Dialog seine eigene Dialogklasse ab und überschreibt je nach Bedarf die Methoden, die tkSimpleDialog.Dialog einem ansonsten vererben würde. \Python22\Lib\lib-tk\tkSimpleDialog.py sollte man sich auf jeden Fall angucken.

Jan

Buttons

Verfasst: Dienstag 13. Mai 2003, 05:45
von Tux
Hi Voges!

Danke erstmal für dein Bsp.!

Hier noch eine Frage: Bei dem Dialog sind unten die Buttons OK und Cancel ! Ist es möglich, dass man für diese Buttons selbst ein commando definiert? Wenn ja, wie?

Danke
ICH

Re: Buttons

Verfasst: Dienstag 13. Mai 2003, 12:07
von Gast
Tux hat geschrieben:Hier noch eine Frage: Bei dem Dialog sind unten die Buttons OK und Cancel ! Ist es möglich, dass man für diese Buttons selbst ein commando definiert?
Hallo Tux!
Wenn es z.B. nur darum geht, beim Druck auf den OK-Button zu prüfen, ob im Dialog gemachte Angaben z.B. richtig oder ausreichend sind, kannst Du die Methode validate() überschreiben.

Code: Alles auswählen

    def validate(self):
        if <bedingung>:
            return 1    # alles ok, Dialog wird beendet
        else:
            # hier ggf. Fehlermeldung
            return 0    # Dialog wird nicht beendet
Wenn Du höchstmöglichen Einfluss auf die Buttons haben willst (z.B. weitere hinzufügen, eigene Methoden aufrufen etc.), dann überschreibe die Methode buttonbox(). Einfach die Methode aus der Datei tkSimpleDialog.py rauskopieren, in die eigene Dialog-Klasse einfügen und dann nach belieben verändern.
Jan