eyl*_*esc 6

您只需使用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_())
Run Code Online (Sandbox Code Playgroud)

  • @SomnAthPal 是的,你应该在询问之前测试一下。 (2认同)