2013-11-27 12 views
9

Pencereyi aktif ekranda nasıl ortalayabilirim, genel ekranda değil? Bu kod hamle pencere değil aktif ekran, genel ekranda ortalamak için: Ben initUI() sonra pencere aktif ekranda 0x0 açılan dan self.center() kaldırırsaPyQt4 merkez penceresi etkin ekranda

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() 

. Etkin ekranda pencereyi açmalı ve bu pencerenin ortasına bu pencereyi taşımalıyım. Thansk! aşağıdaki gibi

cevap

15

olmak için center yöntemini değiştirin:

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()) 

Bu fonksiyon fare noktası bulunduğu dayanmaktadır. Farenin hangi ekranda aktif olduğunu belirlemek için screenNumber işlevini kullanır. Daha sonra bu monitörün screenGeometry ve bu ekranın orta noktasını bulur. Bu yöntemi kullanarak, ekran çözünürlüğü farklı olsa bile pencereyi ekranın ortasına yerleştirebilmelisiniz.