Wie man ein tkinter Fenster auf der Oberseite des anderen?
Ich bin mit Python 2 mit Tkinter
und PyObjC
und dann bin ich mit py2app
.
Das Programm ist in Ordnung, aber die Fenster startet als versteckt, wenn ich das Programm öffnen, damit es nicht angezeigt, bis ich auf das Symbol auf dem dock, um es zu erziehen.
Gibt es eine Möglichkeit, dies zu kontrollieren, machen Sie das Fenster auf der Oberseite des anderen Fenstern, die geöffnet waren beim starten der Anwendung?
Nur um zu verdeutlichen, dass es nicht auf die Spitze für die ganze Zeit der Anwendung ausgeführt wird. Ich brauche nur zu sein, oben auf anderen Fenstern, wenn es startet.
InformationsquelleAutor der Frage Dennis | 2012-01-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich den code, den Sie geben und hinzufügen der ersten und letzten Zeile erhalten Sie:
Testen. Ich bekomme das Fenster wie erwartet. Bekommt man so etwas sonst? Wenn das funktioniert, dann irgendwo in den code, den Sie sagen, es zu tun. Wenn es nicht die gleiche Sache wie Ihre realen Programm dann Ihre Fenster-manager ist es zu tun. Dies ist das beste, das ich tun kann, ohne weitere Informationen.
Edit:
Unter OSX (espicially Versionen mit aqua) tkinter - Fenster angezeigt werden können, die hinter denen, die bereits geöffnet sind (das hat einen bug-report hier: http://bugs.python.org/issue9384 aber geschlossen wurde, als nicht fix). Die Zugabe der
root.lift()
Befehl aufgenommen wurde, bringen Sie das Fenster auf der Vorderseite des Stapels in diesen Fällen und ist unbedenklich für alle anderen.InformationsquelleAutor der Antwort vdbuilder
Kam ich in das gleiche Problem heute. OSX LION 10.7.2. Fügen Sie diesen code vor
mainloop()
löst das Problem.aber das Fenster bleibt immer auf der Oberseite des anderen, bis Sie es schließen. Für real lösen, wir brauchen Sie, um es ein app-bundle, mit py2app.
InformationsquelleAutor der Antwort Sarim
Für OS X 10.8.3, die Kombination der Antworten vdbuilder und user2435139 hat den trick für mich, d.h.
aufgerufen, bevor
InformationsquelleAutor der Antwort jjaderberg
Ich weiß, das ist eine alte Frage, aber ich fand es seltsam, dass niemand kam auf die einfache Lösung, die ich hatte,
InformationsquelleAutor der Antwort Jake
Mehr für mac OS-Benutzer. Obwohl die oben genannten Lösungen scheinen richtig anzuzeigen, die app ist immer noch am "Ende der Stapel" aus dem "Finder' s point of view. Wie gesehen werden kann, mit der
Cmd+Tab
switcher, oder einfach nur die Beobachtung, dass python nicht den Fokus erhalten.Lösung von Benutzername Befestigung alle (auch für mac OS):
Vielleicht umgeben Sie, die mit so etwas wie
InformationsquelleAutor der Antwort Arnaud P
Modifizierte ich die oben genannte Lösung und diese 2 Zeilen für mich auf OSX. Es bringt das Fenster auf der Vorderseite, aber, ohne die Fenster Verhalten sich wie Immer an der Spitze.
InformationsquelleAutor der Antwort yiotix
Den osascript trick, Arnaud P könnten Probleme haben, wenn es mehr als einen Prozess mit der Anwendung Titel 'Python'; darüber hinaus wird es nicht für Python 3 Prozesse (muss aufgerufen werden, 'Python ist3' dann.
Allerdings fand ich ein weiterer trickdie das problem lösen können durch die Verwendung der Prozess-id.
InformationsquelleAutor der Antwort Debilski