2016-01-23 105 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