tk-Fenster-Knöpfe

Fragen zu Tkinter.
jake-the-snake

tk-Fenster-Knöpfe

Beitragvon 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:
  1. # Ausstiegs-Manager
  2. def on_closing():
  3.     if messagebox.askokcancel("System-Rückfrage", "xxxxxxx herunterfahren?"):
  4.        os.system("shutdown -P now")
  5.  
  6. 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:
  1. def on_minisizing():
  2.     if messagebox.askokcancel("System-Rückfrage", "Minimieren-Funktion gesperrt!"):
  3.        print ("Minimieren verhindert!")
  4.  
  5. root.protocol("WM_MINSIZE_WINDOW", on_minisizing)
  6.  


Zusammen sieht der Code so aus:
  1. # Ausstiegs-Manager
  2. def on_closing():
  3.     if messagebox.askokcancel("System-Rückfrage", "xxxxxxx herunterfahren?"):
  4.        os.system("shutdown -P now")
  5.  
  6. def on_minisizing():
  7.     if messagebox.askokcancel("System-Rückfrage", "Minimieren-Funktion gesperrt!"):
  8.        print ("Minimieren verhindert!")
  9.      
  10. root.protocol("WM_MINSIZE_WINDOW", on_minisizing)        
  11. root.protocol("WM_DELETE_WINDOW", on_closing)
  12.  


Leider läuft das nicht wie angedacht. Was mir aufgefallen ist: Ich habe ja oben im Programm unterhalb von root...
  1. root = Tk()
  2. 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
Benutzeravatar
__deets__
User
Beiträge: 2158
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: tk-Fenster-Knöpfe

Beitragvon __deets__ » 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

Re: tk-Fenster-Knöpfe

Beitragvon jake-the-snake » Donnerstag 30. November 2017, 09:59

Morgen deets

Danke für die Verlinkung. Ich hab mich für...
  1. 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: 2235
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: Görgeshausen
Kontaktdaten:

Re: tk-Fenster-Knöpfe

Beitragvon noisefloor » 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

Re: tk-Fenster-Knöpfe

Beitragvon 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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder