【问题标题】:pyQt window is doesn't update until I change windowpyQt 窗口在我更改窗口之前不会更新
【发布时间】:2013-09-09 10:28:17
【问题描述】:

我有一个从硬盘加载文件的程序,其中包含绘制几个 50x50 像素正方形的指令。我还有两个 ComboBoxes 应该对呈现的方块有影响。基本上,两个ComboBoxes 给出了文件夹和文件名。

每次我调用ComboBox 时,我都知道我调用了绘制事件,用于绘制图块的指令会根据选择进行更新。但是,在我切换到另一个窗口然后返回到原始窗口之前,显示的方块不会更新。

这是我的paintEvent 的样子

def paintEvent(self,event):
    self.updateButtons()
    self.updateNameCombo()
    qp = QtGui.QPainter()
    qp.begin(self)
    self.paintTiles(qp)
    qp.end()
    return

updateButton 用于将PushButtonComboBox 放置在屏幕右侧。 UpdateNameComobo 用于更新组合框之一,paintTiles 用于在屏幕上绘制方块。

  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)

那么,是什么阻碍了瓷砖的绘制?

【问题讨论】:

    标签: python combobox pyqt paintevent


    【解决方案1】:

    我通过将ComboBoxes 链接到调用update 函数的函数来解决这个问题:

    链接,

    self.nameCombo.currentIndexChanged.connect(self.comboChanged)
    

    函数,

    self.comboChanged(self):
      self.updateComboData()
      self.update()
    

    请注意,第一次加载 gui 时,会发送 currentIndexChanged 信号。

    【讨论】:

      猜你喜欢
      • 2013-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 2018-01-28
      • 2015-11-21
      • 1970-01-01
      相关资源
      最近更新 更多