2016-01-23 66 views
0

我想到了一個簡單的算法,並實現了它這樣的:居中窗口,它的父窗口的中心妥善PyQt5

def parentcenter(self): 
    self.move(self.parent().frameGeometry().center().x() - self.frameGeometry().width()/2, self.parent().frameGeometry().center().y() - self.frameGeometry().height()/2) 

它在紙面上看起來不錯,但它不能正常工作。子窗口將其放置在self.parent().frameGeometry().center()處。我還試圖通過做print(self.frameGeometry().width())打印子窗口的寬度和高度來查看是否有錯誤,並且確實如此。值的寬度和高度顯示比我預期的要小得多。我的子窗口的寬度值爲100,填滿屏幕的1/3。我的屏幕分辨率不像300x300 lol

爲什麼會發生這種情況?或者我仍然可以在不使用上述方法的情況下居中我的子窗口?

+0

你有沒有試過在繪製窗口後使用'QTimer'來調用'parentcenter'?我懷疑你在窗口之前使用的值實際上是正確的大小。嘗試將'QTimer.singleShot(100,self.parentcenter)'添加到類的__init__方法中。 –

+0

QTimer函數無法正常工作,但是您給了我調用父中心的想法,之後窗口已經被繪製出來,所以我嘗試了它,並且它工作正常!我知道我的代碼是正確的:D再次感謝! – Desertricker

+0

太棒了,很高興我能幫到你! –

回答

0

感謝three_pineapples,我已經解決了這個問題。我所做的唯一的事情是在SetupUi__init__之後致電parentcenter