2012-02-20 14 views
15

इस कोड काम करता है, लेकिन मुझे आश्चर्य है कि अगर कोई आसान तरीका है:PySide/PyQt में स्क्रीन के केंद्र में विजेट कैसे बनाएं?

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

इस बारे में के रूप में सही रूप में आप यह मेरे लिए प्राप्त कर सकते हैं लगता है। – jdi

+1

ज़ेटकोड से एक अच्छा स्निपेट। मुझे आश्चर्य हुआ कि क्या कुछ छोटा रास्ता भी था। –

उत्तर

5

नहीं, यह सबसे आसान तरीका है।

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

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

मुझे लगता है कि 'फ्रेम जीमेट्री()' का उपयोग करना बेहतर है जैसे OP के कोड में 'चौड़ाई() 'और' ऊंचाई() '([क्यूटी विंडो ज्यामिति] (http://developer.qt.nokia.com/doc/ qt-4.8/application-windows.html # विंडो-ज्यामिति)) – reclosedev

15

सिर्फ अपने मुख्य खिड़कियों को यह पंक्ति जोड़ें::

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

मैंने इसे और अधिक केंद्रित करने के लिए दूसरा तर्क बदल दिया। –

1

बस एक और "समारोह शैली" उदाहरण यहाँ एक टुकड़ा मैं C++ का उपयोग किया है है। यदि आप इसे कई बार इस्तेमाल करते हैं।

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

और कोड में हर बार:

widget.move(screen_center(widget)) 
संबंधित मुद्दे