Berechtigung Fensterreihenfolge

Fragen zu Tkinter.
jake-the-snake

Berechtigung Fensterreihenfolge

Beitragvon jake-the-snake » Samstag 20. Januar 2018, 20:45

Abend Forum

Ich habe Verständnisprobleme mit der Berechtigungsnummer für den Hintergrung/Vordergrund.
Wenn ich die Nummer von -topmost, "1" auf "2", "0", oder "0.5" setze, scheint das in keinem Fall den absoluten Vortritt vor anderen Fenstern zu setzen.

Aber nun von Anfang an:

Bisher hatte ich ein Hauptfenster, welches im absoluten Vordergrund läuft, weil es in einem Kiosk-System so gewollt ist.
Neu dazu soll eine Anzeige, also ein neues Fenster, welches vor dem Hauptfenster sein soll. Setze ich eine Meldung mit messagebox ab, erscheint diese im Vordergrund - noch vor dem Hauptfenster. Klicke ich bei angezeigter messagebox auf das dahinter liegende Hauptfenster, bleibt die messagebox weiter im Vordergrund. Das ist so tip-top und gut!

Wenn ich jetzt ein eigenes Toplevel-Fenster erstelle, ist das bei Aufruf auch vor dem Hauptfenster. Klicke ich aber auf das Hauptfenster, verschwindet das neue Toplevel-Fenster hinter das Hauptfenster. Das sollte nicht sein!

Warum bewirken die Zahleinstellungen (Fett gedruckt) nach "top.attributes("-topmost", 1)" keine Verhaltensänderung?

Hier mal mein Testgebilde:

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3.  
  4. from tkinter import *
  5. from tkinter import messagebox
  6. from tkinter.scrolledtext import ScrolledText
  7.  
  8. top = Tk(className=" Spinner-Bar-Anzeige")
  9. top.geometry("300x300")
  10. top.attributes("-topmost", 1)
  11.  
  12. # Fenster-Titel
  13. root = Tk(className=" Hauptfenster mit Aktivität")
  14. root.resizable(FALSE,FALSE)
  15. root.attributes("-topmost", 1)
  16. root.wm_attributes('-type', 'splash')
  17.  
  18. def center_window(width=300, height=200):
  19.     # get screen width and height
  20.     screen_width = root.winfo_screenwidth()
  21.     screen_height = root.winfo_screenheight()
  22.  
  23.     # calculate position x and y coordinates
  24.     x = (screen_width/2) - (width/2)
  25.     y = (screen_height/2) - (height/2)
  26.     root.geometry('%dx%d+%d+%d' % (width, height, x, y))
  27.    
  28. center_window(800, 480)
  29.  
  30. # Titel Schrift ueber Programm-Fenster
  31. zeroLabel = Label(root, text=">> Hauptfenster mit Aktivität <<", font=("TimesNewRoman", 10), bg=('#999999'))
  32. zeroLabel.place(x=305,y=28)
  33.  
  34. root.mainloop()


Man sieht hier, dass die "Spinner-Bar-Anzeige" bei Aufruf vor dem "Hauptfenster" steht - Das ist gut!
Klickt man aber auf das "Hauptfenster", so setzt sich dieses vor das "Spinner-Bar-Fenster" - Das ist schlecht!

Messageboxes lassen sich nicht verdrängen, also muss es noch eine Position vor dem Topmost,1 geben?

Gruss jts

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder