赞
踩
在使用qt设计师
软件时,当遇到软件没有提供自己想使用的控件时,可以使用控件提升的方法
比如在使用QtChart
时,由于qt设计师
没有提供这个控件,所以需要使用控件提升。
QtChart
进行简单的画图使用步骤见下图
QChartView
继承自QGraphicsView
,所以这里在窗口正中放置了一个QGraphicsView
。QGraphicsView
上鼠标右键,选择提升窗口部件,在弹出的框中按下图进行填写使用上面的填写方式后,其后在ui转换后的py文件中生成代码
from PyQt5.QtChart import QChartView
QChartView
test.ui
,然后使用ui2py转换为py文件from PyQt5.Qt import * from ui_test import Ui_Form from PyQt5.QtChart import QChart, QLineSeries,QValueAxis import math class Window(QWidget, Ui_Form): def __init__(self): super().__init__() self.setup_ui() def setup_ui(self): self.setupUi(self) self.setdate() def setdate(self): chart = QChart() chart.setTitle("测试") self.graphicsView.setChart(chart) seri = QLineSeries() seri.setName("cos") chart.addSeries(seri) t = 0 for i in range(100): y = math.cos(t) seri.append(t,y) t += 0.1 ax = QValueAxis() ax.setRange(0,10) ax.setTitleText("x") ay = QValueAxis() ay.setRange(-1,1) ay.setTitleText("y") chart.setAxisX(ax,seri) chart.setAxisY(ay,seri) if __name__ == "__main__": import sys app = QApplication(sys.argv) mywindow = Window() mywindow.show() sys.exit(app.exec_())
运行结果如图:
使用
QtChart
需要额外安装模块,cmd命令pip3 install pyqtchart
pycharm
软件的快捷模板对于上面的代码,其中有一部分在结合qt设计师进行gui设计时,是通用的,可以将这部分的代码设置为快捷模板。
File
-Setting
,如图Live Templates
,将其中的Python
项展开Live Templates
qto
。2处为对该快捷模板的描述。3处为快捷模板内容。$title$
在实际中为ui文件转换后py文件的文件名。from PyQt5.Qt import * from $title$ import Ui_Form class Window(QWidget, Ui_Form): def __init__(self): super().__init__() self.setup_ui() def setup_ui(self): self.setupUi(self) if __name__ == "__main__": import sys from PyQt5 import QtCore QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling) app = QApplication(sys.argv) mywindow = Window() mywindow.show() sys.exit(app.exec_())
qto
,pycharm软件便会提示快捷模板,此时直接点击回车即可输入模板。注意: 在上面的代码中,创建的类使用了多继承,但是一定要注意,使用qt设计师创建的窗口类型一定要和另一个继承的类相同。例如上面qt设计师创建的窗口为
Qwidget
类型,所以上面代码中多继承的另一个继承类型也是Qwidget
。如果使用qt设计师创建的窗口类型为QMainWindow
,则代码应该为class Window(QMainWindow, Ui_MainWindow):
,即继承的另一个类应该也是QMainWindow
。
对于上面使用Qchart来画图的情况而言,也可以不使用控件提升来实现同样的目的。
实现方法:
qchartview
的地方,放置一个frame
控件或者widget
控件。注意在qt设计师中,不要对这个控件设置布局。因为如果设置了布局,在后面使用代码编程时,再次进行布局会发生布局错误。(一般情况下,这个控件也设置不了布局,因为其内部没有控件)
QChartView
)绑定到上一步设置的控件上,代码为: from PyQt5.QtChart import QChartView
self.mychartV = QChartView(self.frame)
self.frame
为qt设计师中用于放置QChartView
的控件名。self.frame
没有给布局。所以这里需要对其进行布局。代码为: self.verticalLayout = QVBoxLayout(self.frame)
self.verticalLayout.addWidget(self.mychartV)
self.frame
控件绑定一个垂直布局(具体根据实际需求),然后在布局中,将绑定在self.frame
控件上的self.mychartV
添加进去。这几段代码也能实现类似提升控件能实现的效果。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。