无论我如何移动按钮,button.rect()的值都没有改变

时间:2014-10-12 04:12:40

标签: python qt pyqt

我已将按钮设置为移动到点(100,65),因此我猜(100,65)应该是按钮的左上角点,但是它是不。输出仍为PyQt4.QtCore.QRect(0, 0, 100, 30),为什么?不应该是PyQt4.QtCore.QRect(100, 65, 100, 30)吗?

import sys
from PyQt4 import QtCore, QtGui

class Example(QtGui.QWidget):

    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        self.button = QtGui.QPushButton('Button', self)
        self.button.move(100, 65)

        self.setGeometry(300, 300, 280, 150)
        print "In Window", self.button.rect()
        self.show()

app = QtGui.QApplication([])
ex = Example()
sys.exit(app.exec_())

2 个答案:

答案 0 :(得分:4)

来自doc:

  

此属性保存窗口小部件的内部几何图形,不包括任何窗口框架。

     

rect属性等于QRect(0, 0, width(), height())

     

有关Windows几何问题的概述,请参阅Window Geometry文档。

     

默认情况下,此属性包含一个取决于用户平台和屏幕几何的值。

QRect()是正常的,因此您应该使用geometry()

http://doc.qt.io/qt-4.8/qwidget.html#rect-prop

http://doc.qt.io/qt-4.8/qwidget.html#geometry-prop

答案 1 :(得分:0)

您需要使用QWidget::geometry来解决您遇到的问题。