사각형 (셀 클래스)을 표시하는 클래스를 작성했습니다. 다른 클래스를 호출하기 위해 클래스 내부의 함수를 사용하고 싶습니다 (예 : Window 클래스에 정의 된 함수에서 cell.paintEvent(self,event)
및 cell.drawRectangles(self,qp)
호출). 불행히도 다른 클래스 (예 : Window)에서이 함수를 호출하는 방법을 모르겠습니다. 즉, 둘 다 인수 (예 : event
및 pq
)가 필요하며 전달할 항목을 모르겠습니다. 여기에 pyqt4 python의 클래스에서 paintEvent() 호출
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'이라는 함수를 가지고 있다면'cell.paintEvent (cell.pr)'처럼'pr' 이벤트 인수를 넘겨 주면됩니다. 그러나 위에 게시 된 코드에서 'paintEvent (self, e)'의 'e'가 어디에 사용되는지는 알 수 없습니다. –
좋은 지적입니다. 나는 그것을 볼 수 없다. 동일한 함수를 사용하지만 나 같은 객체 클래스에는없는이 예제에서 필자의 주도권을 잡았다. 함수에서 인수로 "e"가 입력 된 곳을 볼 수 없습니다. 여기 링크 : [http://zetcode.com/gui/pyqt4/drawing/] –