PyQt Можно ли сделать точки кликабельными в QScatterChart
Есть QScatterChart (диаграмма рассеяния).
Можно ли сделать переход по отдельным точкам?
Имеется в виду следующее: у каждой точки есть некоторая дополнительная информация кроме координат. И при переходе на новую точку эту информацию надо получать. По ТЗ переходить надо стрелками или табом (не мышью!), значит рассчитывать на ToolTip нельзя, тогда остаётся контекстное меню, модальное окно или хотя бы print в консоль.
Но рассмотрю все варианты
В приведённом ниже примере y=const, так и задумано, кроме того это облегчит переход (если он возможен) по точкам.
import sys
import random
from PySide6.QtCore import *
from PySide6.QtWidgets import *
from PySide6.QtCharts import *
from PySide6.QtGui import *
class Window(QChartView):
def __init__(self, *args, **kwargs):
super(Window, self).__init__(*args, **kwargs)
self.resize(400, 300)
self.setRenderHint(QPainter.Antialiasing)
self.m_dataTable = self.generateRandomData(3, 10, 5)
chart = QChart()
self.setChart(chart)
chart.setTitle('Scatter chart')
self.getSeries(chart)
chart.createDefaultAxes()
chart.legend().setVisible(False)
def getSeries(self, chart):
for i, data_list in enumerate(self.m_dataTable):
series = QScatterSeries(chart)
for value, _ in data_list:
series.append(value)
series.setName('Series ' + str(i))
chart.addSeries(series)
def generateRandomData(self, listCount, valueMax, valueCount):
random.seed()
dataTable = []
for i in range(listCount):
dataList = []
yValue = 0.0
f_valueCount = float(valueCount)
for j in range(valueCount):
value = QPointF(j + random.random() * valueMax / f_valueCount, yValue)
label = 'Slice ' + str(i) + ':' + str(j)
dataList.append((value, label))
dataTable.append(dataList)
print(dataTable)
return dataTable
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = Window()
w.show()
sys.exit(app.exec())