Python 捕获工具&;全屏显示屏幕截图(Mac OS风格)-错误消息

Python 捕获工具&;全屏显示屏幕截图(Mac OS风格)-错误消息,python,pyqt,fullscreen,screenshot,breakpoints,Python,Pyqt,Fullscreen,Screenshot,Breakpoints,我正在尝试编写一个允许截图的应用程序。棘手的是,它的行为应该类似于Mac OS中的屏幕截图功能(您按下快捷键并在屏幕上绘制一个矩形,然后该矩形将保存在jpg文件中)。对于这个项目,我使用PyQt4创建GUI(屏幕截图只是这个应用程序中的一个特性!)。到目前为止,我在.py文件中转换了PyQt4表单(目前只包含一个普通表单),并尝试实现一些代码。 以下是我到目前为止的情况: 加载表单时,表单应隐藏,制作当前屏幕的屏幕截图,并全屏显示图像(无边框且位于所有窗口顶部) 实际上,到目前为止,这是可行的,

我正在尝试编写一个允许截图的应用程序。棘手的是,它的行为应该类似于Mac OS中的屏幕截图功能(您按下快捷键并在屏幕上绘制一个矩形,然后该矩形将保存在jpg文件中)。对于这个项目,我使用PyQt4创建GUI(屏幕截图只是这个应用程序中的一个特性!)。到目前为止,我在.py文件中转换了PyQt4表单(目前只包含一个普通表单),并尝试实现一些代码。 以下是我到目前为止的情况:

加载表单时,表单应隐藏,制作当前屏幕的屏幕截图,并全屏显示图像(无边框且位于所有窗口顶部)

实际上,到目前为止,这是可行的,但在关闭应用程序后,我在终端中收到以下错误消息:

    Fri Jan 25 19:19:08 my-macbook-2.local Python[35515] <Error>: kCGErrorIllegalArgument:CGSOrderWindowList
    Fri Jan 25 19:19:08 my-macbook-2.local Python[35515] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
Fri Jan 25 19:19:08 my-macbook-2.local Python[35515]:kCGErrorIllegalArgument:CGSOrderWindowList
Fri Jan 25 19:19:08 my-macbook-2.local Python[35515]:kCGErrorFailure:设置断点@CGErrorBreakpoint(),以便在记录错误时捕获错误。

我在谷歌上搜索了“CGErrorBreakpoint()”,据我所知,它与调试有关。谁能给我一个提示,告诉我怎么处理这个消息?由于我花了好几个小时才知道这个应用程序到目前为止正在做它应该做的事情,我希望能够保持代码的原样,并找到一种让python“忽略”的方法此错误消息…

您如何关闭应用程序?我正在使用CMD+Q关闭应用程序。但在我关闭应用程序之前,错误消息会显示在终端中。应用程序全屏运行,并且始终处于顶部,因此在应用程序运行时无法切换到终端,但错误消息有时间戳。因此,我大约在5分钟前的下午2点启动了应用程序,5分钟后关闭了它,但终端中的错误消息有时间戳2点(而不是下午2点05分…)您的代码在这里运行良好,如果这是您代码的最低版本,它不会重现您的问题(使用
Alt
+
选项卡
键切换到您的终端)谢谢你的回复!不,这是密码。在这种情况下,切换到带有cmd+tab的终端是不可能的,因为应用程序正在运行“始终在顶部”。但是我运行代码时没有“lbl.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)”一行,然后在应用程序运行时切换到teminal,我也可以看到错误消息。显然,它与全屏模式有关:当我将行lbl.showFullScreen()更改为lbl.show()时,没有错误消息。所以你不能重现错误信息?这很奇怪。你在使用windows吗?我在Debian上测试了你的代码。我只能建议您清理代码,直到找到导致错误的原因,例如,有一个
导入
什么都不做,您真的不需要设置ui,它也不做任何相关的事情。。。
    Fri Jan 25 19:19:08 my-macbook-2.local Python[35515] <Error>: kCGErrorIllegalArgument:CGSOrderWindowList
    Fri Jan 25 19:19:08 my-macbook-2.local Python[35515] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.