私は、長方形(セルクラス)を表示するためのクラスを作成しました。私はクラス内で別のクラスを呼び出す関数を持っています(つまり、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関数(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/] –