tk-Fenster-Knöpfe

Fragen zu Tkinter.
Antworten
jake-the-snake

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: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

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

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: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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

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