2013-11-27 36 views
9

如何讓活動屏幕上的窗口居中而不是在一般屏幕上?此代碼移動窗口到中心一般屏幕上,而不是活動的屏幕:活躍屏幕上的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!

回答

15

修改您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以及該屏幕的中心點。即使監視器分辨率不同,使用此方法,也應該能夠將窗口放置在屏幕的中央。