tk-Fenster-Knöpfe

Fragen zu Tkinter.
Antworten
jake-the-snake

Mittwoch 29. November 2017, 20:55

Hallihallo

Ich bin gerade dabei, ein mittels tkinter erstelltes Fenster etwas zu modifizieren.
Ich habe es bereits geschafft, das rote "X" zum Fensterschliessen abzufangen. Und das funktioniert perfekt:

Code: Alles auswählen

# Ausstiegs-Manager
def on_closing():
    if messagebox.askokcancel("System-Rückfrage", "xxxxxxx herunterfahren?"):
       os.system("shutdown -P now")

root.protocol("WM_DELETE_WINDOW", on_closing)
Jetzt wollte ich für den Fall, das der User den "Minimieren-Knopf" in der Fensterleiste drückt, ebenfalls eine Abfangsequenz schreiben:

Code: Alles auswählen

def on_minisizing():
    if messagebox.askokcancel("System-Rückfrage", "Minimieren-Funktion gesperrt!"):
       print ("Minimieren verhindert!")

root.protocol("WM_MINSIZE_WINDOW", on_minisizing)

Zusammen sieht der Code so aus:

Code: Alles auswählen

# Ausstiegs-Manager
def on_closing():
    if messagebox.askokcancel("System-Rückfrage", "xxxxxxx herunterfahren?"):
       os.system("shutdown -P now")

def on_minisizing():
    if messagebox.askokcancel("System-Rückfrage", "Minimieren-Funktion gesperrt!"):
       print ("Minimieren verhindert!")
     
root.protocol("WM_MINSIZE_WINDOW", on_minisizing)        
root.protocol("WM_DELETE_WINDOW", on_closing)

Leider läuft das nicht wie angedacht. Was mir aufgefallen ist: Ich habe ja oben im Programm unterhalb von root...

Code: Alles auswählen

root = Tk()
root.resizable(FALSE,FALSE)
..das resizable stehen. Und durch diesen Befehl ist der "Maximieren-Knopf" beim tkinter-Fenster verschwunden. Das ist mal gar nicht schlecht.
Gibt es, abgesehen vom Versuch den "Minimieren-Knopf" programm-technisch ab zu fangen, auch eine Möglichkeit, diesen "Minimieren-Knopf" verschwinden zu lassen?

Gruß jts
__deets__
User
Beiträge: 3104
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 29. November 2017, 23:58

Hier findest du eine Diskussion de sich damit beschäftigt: https://stackoverflow.com/questions/395 ... deredirect

Wenn ich mich recht erinnere hast du ein Kiosk system. Da reicht denke ich overridedirect.
jake-the-snake

Donnerstag 30. November 2017, 09:59

Morgen deets

Danke für die Verlinkung. Ich hab mich für...

Code: Alles auswählen

root.wm_attributes('-type', 'splash')
...entschieden. Musste halt noch ein Abschaltknopf in das Fenster - war aber nicht so schwer.

Viele Grüsse jts
Benutzeravatar
noisefloor
User
Beiträge: 2423
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Freitag 1. Dezember 2017, 07:46

Hallo,

funktioniert der `shutdown` Befehl ohne Root-Rechte? IMHO nein... Deine GUI nutzt ja hoffentlich keine Root-Rechte.

Da du AFAIK Ubuntu nutzt, sollte der Runterfahren sich aber über `systemctl` ohne Root-Rechte bewerkstelligen lassen.

Gruß, noisefloor
jake-the-snake

Freitag 1. Dezember 2017, 19:10

Hi noisefloor
funktioniert der `shutdown` Befehl ohne Root-Rechte? IMHO nein... Deine GUI nutzt ja hoffentlich keine Root-Rechte
Also auf dem Hauptsystem mit Ubuntu 16.04 kann ich jederzeit mit dem Befehl shutdown im Terminal den Rechner heruntetfahren. Kein sudo und kein PWD nötig. Das Python3-Programm wird, auch wenn es über Autostart läuft, über ein Terminal-Befehl gestartet. Es schreibt den Shutdown-Befehl also ebenfalls in das geöffnete Terminal. Und wie erwartet - funktioniert dies ebenfalls.

Ich hab das Programm mittlerweile auch auf dem Raspi laufen. Auch dort ohne Root-Rechte -> shutdown funktioniert.

Also die Bedenken von dir, dass dies hier nicht ginge, sind unbegründet.

Gruss jts
Antworten