PyQt 应用程序屏幕更改通知

PyQt application screen change notification

我查了一些资料。 C++有一个onScreenChanged函数来通知我们屏幕变化,但是我试了一下,发现PyQt没有这个onScreenChanged函数。我怎么知道应用程序改变了屏幕显示?

如果你想知道window是否改变了屏幕那么你必须使用QWidget的screenChanged signal of the associated QWindow(use windowHandle()方法)。 QWindow 是在调用 show 方法后创建的:

from PyQt5 import QtWidgets

if __name__ == "__main__":
    app = QtWidgets.QApplication([])

    w = QtWidgets.QMainWindow()
    w.show()
    w.windowHandle().screenChanged.connect(lambda screen: print("new screen", screen))
    w.resize(640, 480)

    app.exec_()