QChart добавить ось не показывать, и когда зависли информация работает неправильно - PullRequest
1 голос
/ 12 октября 2019

Я использую pyqt5, чтобы нарисовать простую диаграмму, и мне нужно добавить собственную ось, но когда я добавляю ось, диаграмма не показывает ее, а когда излучается сигнал зависания, мне нужно показать соответствующую точку, но она также не отображается,это нужно нажать, чтобы показать.

class Demo(QChartView):
    def __init__(self):
        super().__init__()
        self.chart = QChart()
        self.setChart(self.chart)
        self.setRenderHint(QPainter.Antialiasing)

        axis_x = QValueAxis()
        axis_x.setTickCount(10)
        axis_x.setTitleText('x')
        self.chart.addAxis(axis_x, Qt.AlignBottom)

        axis_y= QValueAxis()
        axis_y.setLinePenColor(Qt.red)
        self.chart.addAxis(axis_y, Qt.AlignLeft)

        series = QLineSeries()
        series.setPointsVisible(True)
        series.hovered.connect(self.show_tool_tip)
        series << QPointF(1, 5) << QPointF(3.5, 18) << QPointF(4.8, 7.5) << QPointF(10, 2.5)

        series.attachAxis(axis_x)
        series.attachAxis(axis_y)
        self.chart.addSeries(series)
        self.value_label = QLabel(self)

    def show_tool_tip(self, pt, state):
        pos = self.chart.mapToPosition(pt)
        if state:
            self.value_label.move(int(pos.x()), int(pos.y()))
            self.value_label.setText(f'{pt}')
            self.value_label.show()
        else:
            self.value_label.hide()

image

1 Ответ

1 голос
/ 12 октября 2019

1. Добавьте пользовательскую ось:

Если вы запустите свой код в консоли / CMD, вы получите следующую команду:

Series not in the chart. Please addSeries to chart first.
Series not in the chart. Please addSeries to chart first.

Это ясно означает, что вы должны сначала добавить серию в QChart изатем добавьте оси:

self.chart.addSeries(series) # first add the series
series.attachAxis(axis_x)
series.attachAxis(axis_y)

2. Покажите QLabel в соответствующей точке:

Проблема в том, что, поскольку линия очень тонкая, мышь выходит и входит в нее, заставляя парить в каждый момент, создавая впечатление, что она скрыта от наших глаз.

В ожидании ответа на мой комментарий, чтобы предложить решение.

...