2024-05-19 17:02:59 发布
网友
我将Python 2与Tkinter和PyObjC一起使用,然后使用py2app。
Tkinter
PyObjC
py2app
程序运行良好,但每当我打开程序时,窗口都会隐藏起来,因此直到我单击停靠板上的图标将其打开时,窗口才会出现。
有什么方法可以控制它,使窗口位于应用程序启动时打开的其他窗口之上吗?
只是澄清一下,它不必在应用程序运行的整个过程中都处于顶层。我只需要它在其他窗户上启动。
我知道这是个老问题,但我觉得奇怪的是没有人想出我的简单解决方案
app = SampleApp() app.attributes('-topmost', True) app.update() app.attributes('-topmost', False) app.mainloop()
我今天也遇到了同样的问题。OSX狮子10.7.2。在mainloop()解决问题之前添加此代码。
mainloop()
root.call('wm', 'attributes', '.', '-topmost', '1')
但是在你关上窗户之前,它总是在其他的上面。为了真正解决这个问题,我们需要把它做成一个应用程序包,使用py2app。
如果我把你给出的代码加上你得到的第一行和最后一行:
from tkinter import * root = Tk() root.title("app") screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight() root.geometry("550x250+%d+%d" % (screen_width/2-275, screen_height/2-125)) root.configure(background='gold') root.lift() mainloop()
测试一下。我如期拿到了窗户。你还有别的东西吗?如果这是可行的,那么在代码的某个地方你告诉它去做。如果它做的事情和你真正的程序一样,那么你的窗口管理器就是这样做的。这是我在没有更多信息的情况下所能做的最好的事情。
编辑:
在OSX(特别是使用aqua的版本)上,tkinter的窗口可能会显示在已经打开的窗口后面(这里有一个错误报告:http://bugs.python.org/issue9384,但已经关闭,无法修复)。添加root.lift()命令是为了在这些情况下使窗口位于堆栈的前面,而在其他情况下则是无害的。
root.lift()
我知道这是个老问题,但我觉得奇怪的是没有人想出我的简单解决方案
我今天也遇到了同样的问题。OSX狮子10.7.2。在
mainloop()
解决问题之前添加此代码。但是在你关上窗户之前,它总是在其他的上面。为了真正解决这个问题,我们需要把它做成一个应用程序包,使用py2app。
如果我把你给出的代码加上你得到的第一行和最后一行:
测试一下。我如期拿到了窗户。你还有别的东西吗?如果这是可行的,那么在代码的某个地方你告诉它去做。如果它做的事情和你真正的程序一样,那么你的窗口管理器就是这样做的。这是我在没有更多信息的情况下所能做的最好的事情。
编辑:
在OSX(特别是使用aqua的版本)上,tkinter的窗口可能会显示在已经打开的窗口后面(这里有一个错误报告:http://bugs.python.org/issue9384,但已经关闭,无法修复)。添加
root.lift()
命令是为了在这些情况下使窗口位于堆栈的前面,而在其他情况下则是无害的。相关问题 更多 >
编程相关推荐