qt designer python,qt图形开发
python pyqtgraph Qt设计器应用说明
关于pyqtgraph的中文文档大家可以参阅pyqtyraph中文文档
夸脱设计器的文档参阅QtDesigner
本文只是简单介绍pyqtgraph结合设计师使用的一个用例
介绍
大蟒绘图应用最广的当属马特普洛特利,马特普洛特利的界面更加美观使用也更加方便,但是pyqtgraph在数据采集及展示方面比绘制精美的图表更加有优势,与夸脱的结合也更加的流程完整。
pyqtgraph中的所有功能其实都相当于夸脱中小部件的概念,可以通过像其他任何夸脱小部件一样嵌入来使用。
代码实例
夸脱设计器中创建一个简单的主窗口,添加一个垂直布局用于展示pyqtgraph绘图,标签命名图形_布局;
添加一个按键用来控制绘图,标签命名按钮
保存成主界面文件调用。
用皮伊奇将主界面文件转成main_ui.py文件,懒得的同学也可以直接复制下面代码创建main_ui.py文件,代码如下:
# -*-编码:utf-8 -*-#从读取用户界面文件 main_ui.ui 生成的表单实现##创建者:PyQt5 UI代码生成器5.11.3##警告!在此文件中所做的所有更改都将丢失!从PyQt5导入QtCore,QtGui,qtwidgetclass Ui _ main window(对象):def setup Ui(self,main window):主窗口。设置对象名(“主窗口”)主窗口。调整(834,543)自身的大小。中央部件=Qt部件.q widget(主窗口)self。centralwidget。设置对象名称( centralwidget )self。verticallayout=Qt widgets .QVBoxLayout(self。centralwidget)self。verticalLayout。设置对象名称( verticalLayout )self。graph _ layout=Qt部件.QVBoxLayout()self。图形_布局。设置对象名称( graph _ layout )自身。verticallayout。添加布局(自我。graph _ layout)自我。BTN=Qt部件.q按钮(自身。centralwidget)self。BTN。设置对象名( BTN )本身。verticallayout。添加小部件(自我。BTN)主窗口。setcentralwidget(self。centralwidget)self。menubar=Qt widgets .QMenuBar(主窗口)自身。菜单栏。设置几何图形(Qt核心部分.QRect(0,0,834,23))self。菜单栏。设置对象名称(“菜单栏”)主窗口。设置菜单栏(self。menubar)自我。状态栏=Qt部件.QStatusBar(主窗口)自身。状态栏。设置对象名称(“状态栏”)主窗口。设置状态栏(自我。状态栏)自我。重新翻译(主窗口)Qt核心.qmetaobject。connectslotsbyname(主窗口)def retranslateUi(self,MainWindow): _translate=QtCore .qcoreapplication。翻译主窗口。setwindowtitle(_ translate(主窗口,主窗口))self。BTN。settext(_ translate(主窗口,开始绘图)) 新建main.py文件,实现界面跟逻辑分离:
import sys import numpy as NP from pyqt 5 import Qt widgets import pyqtgraph as pg from main _ Ui import Ui _ main window class mygraph window(Qt widgets .QMainWindow,Ui _ main window):def _ _ init _ _(self):super(MyGraphWindow,self).__init__() self.setupUi(self) #初始化窗口self.p1,self.p2=self.set_graph_ui() #设置绘图窗口自我。BTN。点击了。连接(自我。绘图_正弦_余弦)#点击按键开始绘图接下来添加pyqtgraph绘图函数:
def set _ graph _ ui(self):pg。setconfigoptions(antialias=True)# pyqtgraph全局变量设置函数,抗锯齿=真开启曲线抗锯齿win=pg .GraphicsLayoutWidget() #创建程序制导布局,可实现数据界面布局自动管理# pg绘图窗口可以作为一个小部件添加到图像使用者界面中的图形布局,当然也可以添加到夸脱其他所有的容器中自我。图形_布局。添加小部件(赢)赢。添加情节(title=" sin函数") 函数可以添加具有坐标轴的2D绘图窗口
p1=win.addPlot(title=sin函数) # 添加第一个绘图窗口p1.setLabel(left ,text=meg ,color=#ffffff) # y轴设置函数p1.showGrid(x=True,y=True) #栅格设置函数p1.setLogMode(x=False,y=False) # False代表线性坐标轴,真的代表对数坐标轴p1.setLabel(bottom ,text=time ,units=s) # x轴设置函数# p1.addLegend() #可选择是否添加legend win.nextRow() #布局换行,采用垂直排列,不添加此行则默认水平排列p2=win.addPlot(title=cos函数)p2.setLabel(left ,text=meg ,color= # ffffff )p2。show grid(x=True,y=True) p2.setLogMode(x=False,y=False) p2.setLabel(bottom ,text=time ,units=s) # p2.addLegend()返回p1,p2创建绘图函数
def plot _ sin _ cos(self):t=NP。Lin空间(0,20,200)y_sin=NP。sin(t)y_cos=NP。因为我自己。P1。plot(t,y _ sin,pen=g ,name=sin(x),clear=True) self.p2.plot(t,y _ cos,pen=g ,name=con(x),clear=True)# self .P1。图例=无#重新绘图是清空图例# self.p2.legend=无完整main.py代码如下:
#!/usr/无私的绿草/env python# -*-编码:utf-8 -*-#作者:Dell import sys import numpy as NP from pyqt 5 import Qt widgets import pyqtgraph as pg from main _ Ui import Ui _ main window class mygraph window(Qt widgets .QMainWindow,Ui _ main window):def _ _ init _ _(self):super(MyGraphWindow,self).__init__() self.setupUi(self) #初始化窗口self.p1,self.p2=self.set_graph_ui() #设置绘图窗口自我。BTN。点击了。连接(自我。绘图_正弦_余弦)#点击按键开始绘图def set _ graph _ ui(self):pg。setconfigoptions(antialias=True)# pg全局变量设置函数,抗锯齿=真开启曲线抗锯齿win=pg .GraphicsLayoutWidget() #创建程序制导布局,可实现数据界面布局自动管理# pg绘图窗口可以作为一个小部件添加到图像使用者界面中的图形布局,当然也可以添加到夸脱其他所有的容器中自我。图形_布局。添加小部件(赢)P1=赢。添加情节(title= sin函数) # 添加第一个绘图窗口p1.setLabel(left ,text=meg ,color=#ffffff) # y轴设置函数p1.showGrid(x=True,y=True) #栅格设置函数p1.setLogMode(x=False,y=False) # False代表线性坐标轴,真的代表对数坐标轴p1.setLabel(bottom ,text=time ,units=s) # x轴设置函数# p1.addLegend() #可选择是否添加legend win.nextRow() #布局换行,采用垂直排列,不添加此行则默认水平排列p2=win.addPlot(title=cos函数)p2.setLabel(left ,text=meg ,color= # ffffff )p2。show grid(x=True,y=True) p2.setLogMode(x=False,y=False) p2.setLabel(bottom ,text=time ,units= s )# p2 .add legend()返回P1,p2 def plot _ sin _ cos(self):t=NP。Lin空间(0,20,200)y _ sin=NP。sin(t)y _ cos=NP。cos(t)selfq应用程序(系统。argv)myWin=MyGraphWindow()myWin。show()sys。退出(app。exec _())演示效果:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。