DeprecationWarning: QDesktopWidget.availableGeometry (int screen) const устарела centerPoint = QDesktopWidget (). AvailableGeometry (). Center () - PullRequest
1 голос
/ 23 марта 2020

Какая альтернатива? как использовать QGuiApplication и QScreen, чтобы разместить мое QMainWindow в центре экрана.

1 Ответ

2 голосов
/ 23 марта 2020

Вам просто нужно использовать QGuiApplication.primaryScreen() (или QGuiApplication.screens()[i], если вы хотите центрироваться на экране i-esima), как показано ниже:

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_())
...