調用從一個類的paintEvent()我已經寫了類來顯示矩形(細胞類)。我想有裏面的類的功能在另一個類中調用(即調用在一個窗口類中定義的函數cell.paintEvent(self,event)
和cell.drawRectangles(self,qp)
)。不幸的是,我不知道如何在另一個類(即窗口)調用這些函數,因爲它們都需要參數(即event
和pq
),我不知道該怎麼傳授給他們。PyQt4中蟒
這裏是我的細胞類的代碼:
class cell(object):
def __init__(self, c, x, y, w, h, active,flux_val,index):
self.c1 = c
self.c2 = c
self.c3 = 255
self.x = x
self.y = y
self.w = w
self.h = h
self.index = index
self.active = active
self.flux_val = flux_val
self.isChecked = False
self.isHit = False
def paintEvent(self, e):
qp = QtGui.QPainter()
qp.begin(self)
self.drawRectangles(qp)
qp.end()
def drawRectangles(self, qp):
color = self.c2
#qp.setPen(color)
qp.setBrush(color)
qp.drawRect(self.x, self.y, self.w, self.h)
這裏是我想要實例細胞對象數組(我可以很容易做到)的代碼(特別是def.initiate(self)
)的一部分,然後調用它的相關的顯示功能(即cell.paintEvent(self,event)
和cell.drawRectangles(self,qp)
,我還沒有想出如何做):
import sys
from PyQt4 import QtGui, QtCore
import numpy as np
class Window(QtGui.QMainWindow):
def __init__(self):
super(Window, self).__init__()
self.setGeometry(50, 50, 1000, 800)
self.setWindowTitle("PyQT tuts!")
self.initiate()
self.show()
def initiate(self):
#initiate an array of cell objects
#Call their display functions (or any other relevant class functions)
其實所有的代碼是在一個文件中。我已經定義了一個單元對象(即test = cell(a,b,c,...)),然後在initiate()中嘗試了test.paintEvent()。但我提示paintEvent()需要一個參數,它不起作用。當我想通過一個'事件'的論點時,我不知道該怎麼辦。我確實定義了一個函數,它是名爲def pr(self)的單元類,它只會打印一個字符串。我可以很容易地調用該函數(即test.pr(),將打印字符串)。可能如果paintEvent是一個void,我只能說test.paintEvent(),它會爲我繪製形狀。 –
@Jamycodes好,如果你有一個叫做功能'pr',然後通過在事件參數'pr'像'cell.paintEvent(cell.pr)'。但是從上面發佈的代碼中,我看不到'paintEvent(self,e)'中的'e'在被使用。 –
這是一個很好的觀點。我也看不到它。我從這個使用相同函數的例子中領先,但沒有像我這樣的對象類。我看不到的地方的「E」作爲參數是在函數被inputed: 這裏是鏈接: [http://zetcode.com/gui/pyqt4/drawing/] –