仅在启用OpenGL的情况下更新笔时,PyQt5Chart系列不会重绘

时间:2018-07-13 15:38:22

标签: python qt qtchart

我为自定义图例小部件定义了以下事件过滤器。基本上,当鼠标悬停时,我希望线变粗。

在所有系列均禁用OpenGL时,此代码段有效。但是,启用OpenGL后,它不会更改笔。

# self.series is a list
def eventFilter(self, obj, event):
    if event.type() == QEvent.Enter:
        pen = QPen()
        pen.setColor(self.series[0].pen().color())
        pen.setWidth(6)
        pen.setCosmetic(False)
        list(map(lambda series: series.setPen(pen), self.series))
        return True
    elif event.type() == QEvent.Leave:
        pen = QPen()
        pen.setColor(self.series[0].pen().color())
        pen.setWidth(3)
        pen.setCosmetic(False)
        list(map(lambda series: series.setPen(pen), self.series))
        return True
    return False

这是Qt中的错误吗?

1 个答案:

答案 0 :(得分:0)

我发现的解决方法是在更换笔后切换每个系列的可见性:

for series in self.series:
    series.setPen(pen)
    series.setVisible(False)
    series.setVisible(True))

编辑:

感谢@eyllanesc 这种类似且更优雅的解决方案:

# Turns out this doesn't actually work for some reason
    <罢工> series.chart().update()