在仪器的波形显示部分,这里调用了Tabwidget控件,通过控制Tabchange()信号实现时域波形和频域波形的显示及切换。Tabwidget本身无法充当画布功能,也就是说不能直接在上面显示波形。因此,在Tabwidget的2个tab标签中分别嵌入一个QwtPlot控件,它可以提供一个二维的坐标图,让我们在上面绘制曲线、刻度值等我们想要表达的图形数据信息。调用setAxisTitlle(xBottom,String)方法和setAxisTitlle(vLeft,Str4ng)方法可以改变坐标轴横坐标及纵坐标的名称。同时还需要创建一个QwtPlotCurve用来控制QwtPlot上的曲线类型,它可以设定线的样式(实线或虚线)、线宽、颜色等。取得需要显示的波形数据后,通过setData()方法,先将数据给予QwtPlotCurve,然后由QwtPlot Curve通过调用attach()方法将波形绘制到QwtPlot上,最后通过QwtPlot类的repoh()方法将波形显示在GUI界面的Tabwidget控件中。
输入信号后,调用combobox控件的GetWindowText()方法取得采样频率,采样点数等参数信息,通过绑定“开始采样”的“clicked()”信号触发相关槽函数将波形显示在窗口上。这里放置了3个RadioButton,并把他们嵌入到Gmup Box里作为一个整体,通过他们的Checked属性,获取相应窗函数信息对信号进行加窗处理,分析。
仪器界面的效果图如图3所示。
3 结束语
Python是一门年轻、开源、充满活力的脚本编程语言。文中以Python为核心,结合PYQT把面向对象思想应用于虚拟仪器开发,使用户可以根据自身需求方便地修改程序以增减仪器的系统功能或规模,而且可以充分实现程序的重复利用。用Python开发虚拟仪器层次清晰,周期短,代码易修改。在一定程度上比LabvIEW具有更大的优势,具有广泛的研究前景。