X-Button abfangen oder deaktivieren

Fragen zu Tkinter.
Antworten
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

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
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Eine Suche nach "tkinter close button event" ist zu offensichtlich?
Das Leben ist wie ein Tennisball.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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:
Take it easy Mates!
Nobuddy
User
Beiträge: 994
Registriert: Montag 30. Januar 2012, 16:38

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! :)
Antworten