2014-01-15 29 views
0

我想用qwtplot繪製圖形,就像Matlab中的座標軸一樣,這樣一個圓看起來像一個圓,而不像一個橢圓。QwtPlot plotLayout()。canvasRect()失敗

我還沒有找到像「axis equal」這樣的函數,或者錯過了一個函數? 所以我想寫我自己的功能。因此我需要繪圖區域的大小。我認爲「ployLayout()。canvasRect()」應該給我大小。 當我使用QtDesigner和UIC,工作正常,我得到的值,例如:
PyQt4.QtCore.QRect(11,0,458,412)

但是,如果我PROGRAMM我自己的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。

回答

0

不知道Python綁定,但Qwt 5.2提供了類QwtPlotRescaler,它提供了類似「axis equal」特性的功能。

在Qwt 6.1中,你可以找到rescaler的例子,它展示瞭如何使用它。