我有一个从硬盘驱动器加载文件的程序,其中包含绘制几个50x50像素正方形的指令。我还有两个ComboBox
es应该对呈现的正方形产生影响。基本上,两个ComboBox
es给出文件夹和文件名。
每当我调用ComboBox
时,我都可以告诉我调用paint事件,并根据选择更新用于绘制tile的指令。但是,直到我切换到另一个窗口然后转回原始窗口,才会更新显示的方块。
以下是我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)
那么,是什么阻碍了瓷砖的绘制?
答案 0 :(得分:1)
我通过将ComboBox
es链接到调用update
函数的函数来解决这个问题:
链接,
self.nameCombo.currentIndexChanged.connect(self.comboChanged)
功能,
self.comboChanged(self):
self.updateComboData()
self.update()
请注意,首次加载gui时,会发送currentIndexChanged
信号。