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:
Code: Alles auswählen
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from tkinter import *
from tkinter import messagebox
from tkinter.scrolledtext import ScrolledText
top = Tk(className=" Spinner-Bar-Anzeige")
top.geometry("300x300")
top.attributes("-topmost", 1)
# Fenster-Titel
root = Tk(className=" Hauptfenster mit Aktivität")
root.resizable(FALSE,FALSE)
root.attributes("-topmost", 1)
root.wm_attributes('-type', 'splash')
def center_window(width=300, height=200):
# get screen width and height
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# calculate position x and y coordinates
x = (screen_width/2) - (width/2)
y = (screen_height/2) - (height/2)
root.geometry('%dx%d+%d+%d' % (width, height, x, y))
center_window(800, 480)
# Titel Schrift ueber Programm-Fenster
zeroLabel = Label(root, text=">> Hauptfenster mit Aktivität <<", font=("TimesNewRoman", 10), bg=('#999999'))
zeroLabel.place(x=305,y=28)
root.mainloop()
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