Seite 1 von 1

X-Button abfangen oder deaktivieren

Verfasst: Dienstag 25. Dezember 2012, 17:43
von Nobuddy
Hallo zusammen

Bei Tkinter, wie auch bei anderen GUIś gibt es ja die Standard-Buttons 'Minimieren, Wiederherstellen und Schließen'.
Letzteres, das Schließen-Button (X-Button) bereitet mir ein wenig Kopfzerbrechen, da ich hier bis jetzt keine Möglichkeit sehe, dies abzufangen.
Klar habe ich in meinem Hauptmenü ein Beenden-Button, den ich abfangen kann und vor dem Schließen des Fensters bestimmte Aktionen, wie z.B. Datensicherung ausführen kann.
Das ist aber mit dem X-Button wahrscheinlich nicht möglich.

Gibt es dazu eine Möglichkeit den Schließenprozess, der durch den X-Button ausgelöst wird, abzufangen um bestimmte Prozesse vor dem Schließen ablaufen zu lassen?

Oder gibt es bei Tkinter die Möglichkeit, dieses Schließen-Button (X-Button) zu deaktivieren?

Grüße Nobuddy

Re: X-Button abfangen oder deaktivieren

Verfasst: Dienstag 25. Dezember 2012, 20:48
von EyDu
Hallo.

Eine Suche nach "tkinter close button event" ist zu offensichtlich?

Re: X-Button abfangen oder deaktivieren

Verfasst: Mittwoch 26. Dezember 2012, 08:55
von wuf
Hi Nobuddy

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import Tkinter as tk

#~~ Lade den Dateiname dieses Skriptes
script_name = sys.argv[0]

#~~ Konstanten für die Abmessungen des Hauptfensters
MAIN_WIN_XPOS   = 10
MAIN_WIN_YPOS   = 10
MAIN_WIN_WIDTH  = 320
MAIN_WIN_HEIGHT = 320

def close_app_win():
    """X-Button wurde aktiviert"""
    
    print 'Good Bye'
    app_win.destroy()
    
#--- Erstelle ein Tk-Hauptfenster ----
app_win = tk.Tk()

app_win.protocol("WM_DELETE_WINDOW", close_app_win)

app_win.geometry("%dx%d+%d+%d" % (MAIN_WIN_WIDTH, MAIN_WIN_HEIGHT,
    MAIN_WIN_XPOS, MAIN_WIN_YPOS))
  
app_win['bg'] = 'khaki'
app_win.title(script_name)

app_win.mainloop()
Wenn du in der Funktion:

Code: Alles auswählen

def close_app_win():
den destroy-Aufruf weglässt sollte der X-Button keinen Einfluss mehr haben
Wünsche auch dir noch schöne Festtage und ein gutes neues Jahr.

Gruß wuf :wink:

Re: X-Button abfangen oder deaktivieren

Verfasst: Mittwoch 26. Dezember 2012, 11:56
von Nobuddy
Hallo zusammen

EyDu, da rächen sich wieder meine so guten Englischkenntnisse. :wink:

wuf, Danke für Dein schönes Beisspiel, das löst mein Problem. :wink:

Gibt es auch eine Lösung, wenn man in der Fensterleiste des Betriebsystems, mit der linken Maustaste den Menüpunkt 'Schließen' auswählt?

Schöne Weihnachten und einen Guten Rutsch ins Neue Jahr
Nobuddy

Nachtrag:
Habe gerade festgestellt, daß meine letzte Frage überflüssig ist, da die auch mit wufś Code funktioniert! :)