Центральное окно PyQt4 на активном экране
Как я могу центрировать окно на активном экране, но не на общем экране? Этот код перемещает окно в центр на общем экране, а не на активном экране:
import sys
from PyQt4 import QtGui
class MainWindow(QtGui.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.initUI()
def initUI(self):
self.resize(640, 480)
self.setWindowTitle('Backlight management')
self.center()
self.show()
def center(self):
frameGm = self.frameGeometry()
centerPoint = QtGui.QDesktopWidget().availableGeometry().center()
frameGm.moveCenter(centerPoint)
self.move(frameGm.topLeft())
def main():
app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Если я удалю self.center() из initUI(), тогда окно будет открыто на 0x0 на активном экране. Мне нужно открыть окно на активном экране и переместить это окно в центре этого экрана. Thansk!
Ответы
Ответ 1
Измените способ center
следующим образом:
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())
Эта функция основана на том, где находится точка мыши. Он использует функцию screenNumber, чтобы определить, на каком экране активна активная мышь. Затем он находит screenGeometry этого монитора и центральную точку этого экрана. Используя этот метод, вы можете разместить окно в центре экрана, даже если разрешение монитора отличается.
Ответ 2
Одно исправление для пользователей PyQt5:
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())
Ответ 3
Это для PyQt4
и PyQt5
.
1] self.setGeometry(0, 0, 700, 500) #My window resolution 700x500
2] Разрешение моего компьютера - 1920x1080
, разрешение моего окна - 700x500
.
3] 1920/2 = 960
. и 1080/2 = 480
. Это будет центр левого верхнего угла окна.
4] Мы хотим центральное окно. Так что нужно: ширина окна 960/2 и высота окна 480/2.
5] Ответ - 480,240
. Теперь команда self.setGeometry(480, 240, 700, 500)
Краткое содержание: Разрешение вашего компьютера /2 - Разрешение окна /2 до WinX, WinY
.