У меня есть программа, которая загружает файл с жесткого диска, с инструкциями рисовать несколько квадратов размером 50x50 пикселей. У меня также есть два ComboBox
es, которые должны влиять на представленные квадраты. В основном, две ComboBox
es предоставляют папку и имя файла.pyQt окно не обновляется, пока я не меняю окно
Каждый раз, когда я вызываю ComboBox
, я могу сказать, что я вызываю событие рисования, а инструкции, используемые для рисования плиток, обновляются на основе выбора. Однако отображаемые квадраты не обновляются, пока я не переключусь в другое окно, а затем вернусь к исходному окну.
Вот как мой paintEvent look
def paintEvent(self,event):
self.updateButtons()
self.updateNameCombo()
qp = QtGui.QPainter()
qp.begin(self)
self.paintTiles(qp)
qp.end()
return
updateButton
используется для размещения PushButton
и ComboBox
в правой части экрана .
UpdateNameComobo is used to update one of the comboBoxes and
painTiles`` используется для рисования квадратов на экране.
def paintTiles(self,qp):
self.loadTileSet()
width= self.frameSize().width()
height = self.frameSize().height()
self.endX = width - 120
self.endY = width - 25
x = self.startX
y = self.startY
i = self.startI
while i < len(self.tiles):
self.handleTile(qp,x,y,self.tiles[i])
i += 1
x += 60
if x >= self.endX - 60:
x = self.startX
y += 60
if y >= self.endY - 60:
break
return
loadTileSet
используется для чтения данных плитки с жесткого диска. и handleTile
используется для рисования одного квадрата.
def handleTile(self,qp,x,y,tile):
pen = QtGui.QPen(QtCore.Qt.blue, 1, QtCore.Qt.DotLine)
for line in tile:
r,g,b,a = tile[line]
clr = QtGui.QColor(r,g,b,a)
pen.setColor(clr)
qp.setPen(pen)
pX = x + line[0]
pY = y + line[1]
qp.drawPoint(pX,pY)
Итак, что удерживает рисунок плиток?