是否可以动态(扭曲spinbox
)改变图表的比例?
一个最小可重复的示例(只有轴,这里没有实际的图表,因为不需要):
from PySide6.QtWidgets import *
from PySide6.QtCharts import *
from PySide6.QtGui import *
import sys
class Main(QWidget):
def __init__(self):
super().__init__()
chart = MyChart()
spinbox = MySpinBox()
vbox = QVBoxLayout()
vbox.addWidget(chart)
vbox.addWidget(spinbox)
self.setLayout(vbox)
class MyChart(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout()
chart_view = QChartView()
chart_view.setRubberBand(QChartView.RectangleRubberBand)
chart_view.setRenderHint(QPainter.Antialiasing)
layout.addWidget(chart_view)
chart = QChart()
chart.setAnimationOptions(QChart.SeriesAnimations)
series = QLineSeries()
chart.addSeries(series)
axis_x = QValueAxis()
chart.addAxis(axis_x, Qt.AlignBottom)
series.attachAxis(axis_x)
axis_y = QValueAxis()
chart.addAxis(axis_y, Qt.AlignLeft)
series.attachAxis(axis_y)
chart_view.setChart(chart)
self.setLayout(layout)
class MySpinBox(QWidget):
def __init__(self):
super().__init__()
self.chart = MyChart() # экземпляр класса графика, через него надо менять масштаб
widget = QSpinBox()
widget.setMinimum(-100)
widget.setMaximum(100)
widget.setSingleStep(1)
widget.valueChanged.connect(self.value_changed)
vbox = QVBoxLayout()
vbox.addWidget(widget)
self.setLayout(vbox)
def value_changed(self, i):
# Тут надо писать логику изменения масштаба и что-то делать с self.chart
print(i)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Main()
window.show()
sys.exit(app.exec())
请始终提供一个可重现性最低的示例来说明问题。还应该有一个时间表。如果你能以某种方式展示你想要得到的东西,那就太好了。
您的更改和添加应该在问题正文中,而不是在评论中。
我不确定我的理解是否正确,但在我看来,作为替代方案,它可能看起来像这样: