QwtPlot plotLayout()。canvasRect()失败

时间:2014-01-15 14:43:19

标签: python qwt

我想用qwtplot绘制数字,就像Matlab中的轴一样,这样圆圈看起来就像一个圆圈而不像椭圆。

我没有找到类似"轴等于"的功能,或者错过了一个? 所以我想写自己的功能。因此我需要绘图区域的大小。我认为" ployLayout()。canvasRect()"应该给我这么大的。 当我使用QtDesigner和uic时,它工作正常,我得到的值,例如:
    PyQt4.QtCore.QRect(11,0,458,412)

但是,如果我自己编程GUI不起作用,结果是:     PyQt4.QtCore.QRect()

这是我的代码

import sys
from PyQt4 import QtCore, QtGui, Qt
import PyQt4.Qwt5 as Qwt

class mainWindow(QtGui.QDialog):
    def __init__(self, numberOfObjects, parent=None):
        QtGui.QDialog.__init__(self, parent)

        okButton = QtGui.QPushButton(self.tr("OK"))
        cancelButton = QtGui.QPushButton(self.tr("Cancel"))

        self.connect(okButton, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("accept()"))
        self.connect(cancelButton, QtCore.SIGNAL("clicked()"), self, QtCore.SLOT("reject()"))

        self.testPlot =  Qwt.QwtPlot(self) 

        buttonLayout = QtGui.QHBoxLayout()
        buttonLayout.addStretch(1)
        buttonLayout.addWidget(okButton)
        buttonLayout.addWidget(cancelButton)

        mainLayout = QtGui.QVBoxLayout()
        mainLayout.addWidget(self.testPlot)
        mainLayout.addLayout(buttonLayout)

        self.setLayout(mainLayout)

        self.resize(450, 250)

        cr = self.testPlot.plotLayout().canvasRect()
        print cr


if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    win = mainWindow(0) 
    sys.exit(win.exec_())

任何人都可以帮助我吗? 我使用Python 2.7,QT4和Qwt5。

1 个答案:

答案 0 :(得分:0)

不了解Python绑定,但Qwt 5.2提供了一个类QwtPlotRescaler,提供类似“轴相等”功能的东西。

在Qwt 6.1中,您可以找到重新缩放器示例,其中显示了如何使用它。