import sys, csv
from PySide import QtGui, QtCore
from mainStrato import *
X_START = 10
Y_START = 15
MAX_WIDTH = 1350
MAX_LENGH = 1650
ZOOM = 2.5
WIDTH_PEZZO = 150
LENGH_PEZZO = 600
CENTER_OFFSET_X = 15
CENTER_OFFSET_Y = 0
class Strato(QtGui.QMainWindow, Ui_MainWindow):
#Apre il file CSV e copia le singole righe in una lista
def __init__(self, parent=None):
super(Strato, self).__init__(parent)
self.setupUi(self)
def paintEvent(centralwidget, e):
qp = QtGui.QPainter()
qp.begin(centralwidget)
print "paint event"
qp.end()
self.drawRectangles(qp)
def drawRectangles(self, qp):
color = QtGui.QColor(0, 0, 0)
color.setNamedColor('#d4d4d4')
qp.setPen(color)
qp.setBrush(QtGui.QColor(200, 0, 0))
coordCarro = QtCore.QRectF(X_START, Y_START, MAX_WIDTH/ZOOM, MAX_LENGH/ZOOM)
qp.drawRect(coordCarro)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = Strato()
window.show()
sys.exit(app.exec_())
mainstrato
是从pyside-uic
生成的文件。
调用self.drawRectangles
或Strato中调用inside paint event的任何其他函数时出现错误Object not defined
?
如果我在paint事件中复制drawRectangles
代码,它就会工作!你知道吗
建议?怎么了?你知道吗
在
paintEvent
定义中缺少self
,我假设centralwidget
是UI类的一部分,因此应该可以通过self.centralwidget
访问它(因为您是从UI类继承的)。除了self
,paintEvent
只有一个参数,事件对象。另外,在绘制矩形之前,不能调用qp.end()
。最后,您需要正确地缩进您的代码-但在发布问题时,这也可能是复制和粘贴问题。试试看最后,您可以从一个小部件的
paintEvent
中should not paint on other widgets。相反,子类QWidget
并覆盖其绘制事件。以下sscce工作(删除所有不相关的代码):相关问题 更多 >
编程相关推荐