尽管它是一个有效的选项,但是不必升级一个类,这样就可以在基于.ui生成的窗口中显示该类,因为您可以使用空的QWidget(不提升它)作为容器,然后放置一个布局,并在布局中添加QChartView。
该图显示了一个空的QWidget,其名称为“ chart_container”,将在其中放置QChartView:
<?xml version="1.0" encoding="UTF-8"?><ui version="4.0"> <class>MainWindow</class> <widget name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>800</width> <height>600</height> </rect> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget name="centralwidget"> <widget name="pushButton"> <property name="geometry"> <rect> <x>210</x> <y>280</y> <width>88</width> <height>33</height> </rect> </property> <property name="text"> <string>PushButton</string> </property> </widget> <widget name="pushButton_2"> <property name="geometry"> <rect> <x>340</x> <y>80</y> <width>88</width> <height>33</height> </rect> </property> <property name="text"> <string>Test Trade</string> </property> </widget> <widget name="chart_container" native="true"> <property name="geometry"> <rect> <x>29</x> <y>29</y> <width>291</width> <height>231</height> </rect> </property> </widget> </widget> <widget name="menubar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>800</width> <height>24</height> </rect> </property> </widget> <widget name="statusbar"/> </widget> <resources/> <connections/></ui>
然后通过通过布局将QChartView添加到容器中来实现代码:
import sysfrom PyQt5 import QtCore, QtWidgets, uic, QtChart# load both ui fileuifile_1 = "UI/main.ui"form_1, base_1 = uic.loadUiType(uifile_1)class Example(base_1, form_1): def __init__(self): super(base_1, self).__init__() self.setupUi(self) data = ( (1, 7380, 7520, 7380, 7510, 7324), (2, 7520, 7580, 7410, 7440, 7372), (3, 7440, 7650, 7310, 7520, 7434), (4, 7450, 7640, 7450, 7550, 7480), (5, 7510, 7590, 7460, 7490, 7502), (6, 7500, 7590, 7480, 7560, 7512), (7, 7560, 7830, 7540, 7800, 7584), ) series = QtChart.QCandlestickSeries() series.setDecreasingColor(QtCore.Qt.red) series.setIncreasingColor(QtCore.Qt.green) ma5 = QtChart.QLineSeries() # 5-days average data line tm = [] # stores str type data # in a loop, series and ma5 append corresponding data for num, o, h, l, c, m in data: series.append(QtChart.QCandlestickSet(o, h, l, c)) ma5.append(QtCore.QPointF(num, m)) tm.append(str(num)) chart = QtChart.QChart() chart.addSeries(series) # candle chart.addSeries(ma5) # ma5 line chart.setAnimationOptions(QtChart.QChart.SeriesAnimations) chart.createDefaultAxes() chart.legend().hide() chart.axisX(series).setCategories(tm) chart.axisX(ma5).setVisible(False) chartview = QtChart.QChartView(chart) **self.chart_container.setContentsMargins(0, 0, 0, 0) lay = QtWidgets.QHBoxLayout(self.chart_container) lay.setContentsMargins(0, 0, 0, 0) lay.addWidget(chartview)**if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec_())



