弃用警告:QDesktopWidget.availableGeometry(int screen) const 已弃用 centerPoint = QDesktopWidget().availableGeometry().center()

DeprecationWarning: QDesktopWidget.availableGeometry(int screen) const is deprecated centerPoint = QDesktopWidget().availableGeometry().center()

还有什么选择?如何使用 QGuiApplication 和 QScreen 将我的 QMainWindow 放在屏幕中央。

你只需要使用 QGuiApplication.primaryScreen()(如果你想在 i-esima 屏幕上居中,则使用 QGuiApplication.screens()[i])如下所示:

from PyQt5 import QtCore, QtGui, QtWidgets
# or
# from PySide2 import QtCore, QtGui, QtWidgets


def center_window(widget):
    window = widget.window()
    window.setGeometry(
        QtWidgets.QStyle.alignedRect(
            QtCore.Qt.LeftToRight,
            QtCore.Qt.AlignCenter,
            window.size(),
            QtGui.QGuiApplication.primaryScreen().availableGeometry(),
        ),
    )


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)

    w = QtWidgets.QMainWindow()
    w.resize(640, 480)
    w.show()

    QtCore.QTimer.singleShot(0, lambda: center_window(w))

    sys.exit(app.exec_())