PyQt4 center window on active screen

前端 未结 4 1952
无人及你
无人及你 2020-12-28 19:21

How I can center window on active screen but not on general screen? This code moves window to center on general screen, not active screen:

import sys
from Py         


        
相关标签:
4条回答
  • 2020-12-28 19:23

    One correction for PyQt5 users:

    import PyQt5
    
    def center(self):
        frameGm = self.frameGeometry()
        screen = PyQt5.QtWidgets.QApplication.desktop().screenNumber(PyQt5.QtWidgets.QApplication.desktop().cursor().pos())
        centerPoint = PyQt5.QtWidgets.QApplication.desktop().screenGeometry(screen).center()
        frameGm.moveCenter(centerPoint)
        self.move(frameGm.topLeft())
    
    0 讨论(0)
  • 2020-12-28 19:30

    The other answers worked with a few deprecated warnings when using PySide2. So here is my version of the same function:

    def center(self):
        screen = QtGui.QGuiApplication.screenAt(QtGui.QCursor().pos())
        fg = self.frameGeometry()
        fg.moveCenter(screen.geometry().center())
        self.move(fg.topLeft())
    
    0 讨论(0)
  • 2020-12-28 19:31
    self.move(QDesktopWidget().availableGeometry().center().x() - self.frameGeometry().center().x() * 0.5, QDesktopWidget().availableGeometry().center().y() - self.frameGeometry().center().y() * 0.5)
    
    0 讨论(0)
  • 2020-12-28 19:38

    Modify your center method to be as follows:

    def center(self):
        frameGm = self.frameGeometry()
        screen = QtGui.QApplication.desktop().screenNumber(QtGui.QApplication.desktop().cursor().pos())
        centerPoint = QtGui.QApplication.desktop().screenGeometry(screen).center()
        frameGm.moveCenter(centerPoint)
        self.move(frameGm.topLeft())
    

    This function is based on where the mouse point is located. It uses the screenNumber function to determine which screen the mouse is current active on. It then finds the screenGeometry of that monitor and the center point of that screen. Using this method, you should be able to place the window in the center of a screen even if monitor resolutions are different.

    0 讨论(0)
提交回复
热议问题