Seite 1 von 1

Label kein Topmost trotz Topmost

Verfasst: Donnerstag 8. Oktober 2020, 13:32
von Toorms
Hallo Community,

ich lasse ein ganz normales, einfaches Label anzeigen mit Tkinter. Soweit so gut, folgend einmal mein Code:

Code: Alles auswählen

def show_label_on_screen():
    label = tk.Label(text=strHostName + ' | ' + strNetworkAddress, font=("Consolas", 12, "bold"),
                     fg='black', bg='white')
    label.master.overrideredirect(True)
    label.master.geometry("+10+1042")
    label.master.lift()
    label.master.attributes('-topmost', True)
    label.after_idle(label.master.attributes, '-topmost', True)
    label.pack()
    label.mainloop()
Alles gut - beim starten des Raspberry Pi wird es auch über screen -dmS informations python /home/user/main.py aufgerufen und klappt auch so wie ich das möchte. Es zeigt ein kleines Label im linken unteren Bildschirm an. Nach dem Aufruf startet aber ein weiteres Script, welches beispielsweise nur eine Webseite im Fullscreen-Kioskmode aufruft (es ist aber auch egal, was ich aufrufe, also ob Chromium oder aber einen omxplayer). Dieses verdeckt nun das Label aber, obwohl das Label einen Topmost hat.

Nun habe ich hier und da schon etwas darüber gelesen und auch getestet (letzter Test war "label.after_idle(label.master.attributes, '-topmost', True)"), aber ich werde nicht wirklich weiter schlau. Habt ihr noch eine Idee, woran es liegen kann?

Re: Label kein Topmost trotz Topmost

Verfasst: Donnerstag 8. Oktober 2020, 13:55
von Sirius3
Da wird wohl das eine Topmost-Fenster vom nächsten Topmost-Fenster überdeckt werden. Das ist ein grundsätzliches Problem.
Funktionen sollten alles, was sie brauchen über ihre Argumente bekommen. strHostName und strNetworkAddress kommen aus dem Nichts.
Variablennamen werden komplett klein geschrieben, Datentypen haben im Variablennamen nichts verloren: hostname, network_address.

Re: Label kein Topmost trotz Topmost

Verfasst: Donnerstag 8. Oktober 2020, 14:07
von __blackjack__
@Toorms: Letztlich ist das Sache der Fensterverwaltung. Du hast der den Hinweis gegeben, dass Dein Fenster immer obenauf sein soll. Wie weit die Fensterverwaltung dem nachkommt, liegt nicht mehr in Deiner Hand.

Und gerade bei den beiden Beispielen — Browser im Kioskmodus und Videoplayer wo ich vermute im Vollbildmodus — werden deren Programmierer ja *auch* fordern immer im Vordergrund angezeigt zu werden. Wenn nicht sogar Vollbildschirm und damit auch vor Elementen wie einer Taskleiste, wo ja sonst auch alle normalen Fenster dahinter angezeigt werden. Vollbild ist ja noch eine Stufe weiter. Das ist ja nicht einfach: Ich möchte gerne vor/über allen anderen angezeigt werden, sondern ich möchte den ganzen Bildschirm und nur für mich alleine.

Re: Label kein Topmost trotz Topmost

Verfasst: Donnerstag 8. Oktober 2020, 16:10
von Toorms
Danke für die Informationen. Einleuchtend das ganze, wenn das eigentliche Fensterhandling nicht mehr in meiner Hand liegt, wie es __blackjack__ sagt. In dem Snippets sah es so aus, als kämen die Informationen aus dem nichts, war auch ein etwas älteres Code-Beispiel. Mittlerweile kommt es alles über die Argumente - das ganze ist schon ein wenig aufgeräumter, aber danke auch dir dennoch für die Hinweise.