PyQt5奇怪的窗口位置问题

时间:2016-06-09 08:32:43

标签: python python-3.4 pyqt5

上面的代码奇怪地有一个问题。我不明白为什么,但如果我将y窗口的大小设置为923以上,则窗口不会放在屏幕中间。它会进入屏幕的左上角。

from PyQt5.QtWidgets import QApplication,QDesktopWidget,QMainWindow
from PyQt5 import QtCore

import sys

class cssden(QMainWindow):
    def __init__(self):
        super().__init__()


        self.mwidget = QMainWindow(self)
        self.setWindowFlags(QtCore.Qt.FramelessWindowHint)


        #size
        self.setFixedSize(1100,923) # <--- set this 924 and more
        self.center # <-- function that set the window middle of the screen
        self.show()

    def center(self): # <-- center function
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

app = QApplication(sys.argv)
app.setStyleSheet("QMainWindow{background-color: rgb(30,30,30);border: 1px solid black}")

ex = cssden()
sys.exit(app.exec_())

为什么呢?这是关于我的屏幕的分辨率是1920x1080?我只是不明白为什么数字是923以及如何解决这个问题。

修改:在923为什么它会进入屏幕的左上角之后,事实证明PyQt会自动居中窗口?每种分辨率都有默认数字吗?

1 个答案:

答案 0 :(得分:0)

从此答案中尝试此解决方案:PyQt4 center window on active screen

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   和那个屏幕的中心点。使用这种方法,你应该   即使监视器,也能将窗口置于屏幕中央   决议是不同的。