Tastenkombinationen abfangen (Alt - F4)

Fragen zu Tkinter.
Antworten
IgelaufReisen
User
Beiträge: 49
Registriert: Montag 29. Oktober 2007, 20:10
Wohnort: Berlin
Kontaktdaten:

Hallöchen liebe Community!
Ich wollte fragen, ob es möglich ist, die Tastenkombination Alt-F4 abzufangen, sodass sich das Fenster nicht schließt, sondern irgendwas anderes passiert.
Parallel auch anwendbar für Strg-Alt-Entf oder Ähnliches.
Eine Prüfung, ob Alt-F4 gedrückt wird, hab ich schon hingekriegt mit bind, aber weiter komm ich leider nicht.

Danke im Vorraus
Der Igel
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ich denke nicht, dass es eine allgemeine Lösung gibt - lasse mich aber gerne auch vom Gegenteil überzeugen.

Bestimmte Shortcuts fängt das Betriebssystem bzw. der Windowmanager einfach ab. Je nach Betriebssytem/Windowmanager kann man dort ja einiges einstellen.
Um zu vermeiden, dass ein bestimmter Shortcut abgefangen wird, müsste man ihn ganz aktivieren. Dann sollte die Bindung mit Tkinter funktionieren.

Für den Sonderfall <Alt>-<F4> kenne ich allerdings eine Lösung:

Code: Alles auswählen

import Tkinter as tk

def onAltF4():
    # Mach noch irgendetwas
    label["text"] = "In 3 seconds I'm gone ..."
    root.after(3000,quitnow)

def quitnow():
    root.quit()
    root.destroy()

root = tk.Tk()
label = tk.Label(root,text="Close the window, please!")
label.pack()
root.wm_protocol("WM_DELETE_WINDOW",onAltF4)
root.mainloop()
Das funktioniert auch beim Klick auf [X].

Edit: Statt wm_protocol() genügt auch protocol().
IgelaufReisen
User
Beiträge: 49
Registriert: Montag 29. Oktober 2007, 20:10
Wohnort: Berlin
Kontaktdaten:

Cool.
Das funzt schon mal. Aber ich würd nun auch gern den Druck auf die WIN-Tasten oder die Kombi Strg-Alt-Entf abfangen. Eben komplett unterbinden, dass das Fenster auf ne andere Art zugemacht werden kann, als ich es erlaube.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

WIN-Tasten legt nahe, dass es um Windows geht. Bei Windows XP ist aber Strg-Alt-Entf wohl nicht abzufangen: http://www.c-plusplus.de/forum/viewtopi ... -is-0.html und http://www.c-plusplus.de/forum/viewtopic.php?t=39146
MfG
HWK
Antworten