2012-02-20 15 views
15

Bu kod çalışır, ancak herhangi bir basit yolu var mı acaba:Ekranın ortasında PySide/PyQt içinde bir widget nasıl oluşturulur?

def center(self): 
    qr = self.frameGeometry() 
    cp = gui.QDesktopWidget().availableGeometry().center() 
    qr.moveCenter(cp) 
    self.move(qr.topLeft()) 
+4

Bu yaklaşık olarak doğru bana ulaşmaz görünüyor. – jdi

+1

ZetCode'dan güzel bir pasaj. Biraz daha kısa bir yol var mı diye merak ettim. –

cevap

5

Hayır, en basit yoludur.

QRect desktopRect = QApplication::desktop()->availableGeometry(this); 
    QPoint center = desktopRect.center(); 

    move(center.x() - width() * 0.5, center.y() - height()); 
+2

'frameGeometry() 'yi OP'nin kodunda' width()' ve 'height()' ([Qt. Window Geometry] (http://developer.qt.nokia.com/doc/ qt-4.8/application-windows.html # window-geometri) – reclosedev

15

sadece ana pencere için bu satırı ekleyin:

self.move(QtGui.QApplication.desktop().screen().rect().center()- self.rect().center()) 
7
self.move(QDesktopWidget().availableGeometry().center() - self.frameGeometry().center()) 
+0

Daha fazla ortalamak için ikinci argümeni değiştirdim. –

1

Bir başka "fonk tarzı" örnek Burada C++ kullandım snippet'idir. Birkaç kez kullanırsanız.

screen_center = lambda widget: QApplication.desktop().screen().rect().center()- widget.rect().center() 

Ve kodunda her zaman

:

widget.move(screen_center(widget)) 
İlgili konular