Python学习笔记(四)QT开发图形界面总结

QT5QTSide2:

VS编辑器可以安装插件 Python学习笔记(四)QT开发图形界面总结_第1张图片

安装后,可以直接拉起编辑器编辑界面,或者再python的安装路径下\Python38\Scripts\ pyside2-designer.exe直接打开新建

Python学习笔记(四)QT开发图形界面总结_第2张图片

新建时注意自己选的模板类型及集成的父类(很重要)后面通过py方式加载界面时用到。

Python学习笔记(四)QT开发图形界面总结_第3张图片

控件之间的比例调整,对齐方式等都是通过layouts布局实现的,最后要给最上层的Form对接指定布局,可以实现窗口控件拉伸自适应的效果。

Python学习笔记(四)QT开发图形界面总结_第4张图片

如果要对单个控件进行布局适配,要将该控件单独添加到一个layout中来实现,如下图:

Python学习笔记(四)QT开发图形界面总结_第5张图片

布局完成后,保存为.ui的文件,可以在py脚本中加载,我们使用pyside2designer,所以引用库时也选择pyside2

from PySide2.QtWidgets import QApplication

from PySide2.QtUiTools import QUiLoader

class Ios_perfer():

    def __init__(self):

        loader = QUiLoader()

        loader.registerCustomWidget(pg.PlotWidget)   /这里是项目中嵌入了画图的功能,要单独注册一下后面会说

        self.ui = loader.load('iosPerfer.ui')           /通过加载ui文件实现ui对象的实例化

        self.ui.pushButton_stop.setEnabled(False)

        self.ui.pushButton_start.clicked.connect(self.start_perfer)

添加画布graphicsViewPyQtGraph 中 绘图控件类 有两种 PlotWidget 和 GraphicsLayoutWidget, 都是 GraphicsView 子类。GraphicsView 是 Qt 的 QGraphicsView 子类,在其基础上改进了一些功能。

选中控件提升为PlotWidget类,头文件用pyqtgraph:

Python学习笔记(四)QT开发图形界面总结_第6张图片

点击提升:

以上完成后,需要再类的初始化ui的地方注册一下,就可以操作ui.graphicsView控件了:

import pyqtgraph as pg

class Ios_perfer():

    def __init__(self):

        loader = QUiLoader()

        loader.registerCustomWidget(pg.PlotWidget)

pyqt应用打包:

同样适用pyinstaller进行打包,但是如果是加载.ui方式的,ui文件要和exe放在同一个目录下才行,如何把ui文件也打进去?

解决方法:

1、将ui文件转换为py文件:

\Python38\Scripts\ pyside2-designer.exe的同级路径下有2个转换exe工具,pyside2-uic.exe  pyuic5.exe 拷贝到ui文件所在路径下执行,pyside2-uic iosPerfer.ui > iosPerfer.py,我们的ui文件是通过pyside2 designer保存的,所以用pyside2-uic转换。转换后生成的py文件,pyqtgraph绘图也会自动处理:

from pyqtgraph import PlotWidget

class Ui_Form(object):

def setupUi(self, Form):

   …     

self.graphicsView = PlotWidget(Form)

        self.graphicsView.setObjectName(u"graphicsView")

        self.graphicsView.setEnabled(True)

2、主应用调用py中的ui类:父类如果继承错误会报各种layout不兼容错误,类似:

QLayout: Attempting to add QLayout "" to QMainWindow "Form", which already  has a layout

from PySide2.QtWidgets import QWidget

from iosPerfer import Ui_Form   转换为py文件的ui

  

class Ios_perfer(QWidget):  /这里继承的父类是QWidget还是QMainWindow,取决于前面提到的designer设计时最上层form类类型

    def __init__(self):

        super().__init__()  /初始化父类 QWidget

        self.ui = Ui_Form() ///初始化对象

        self.ui.setupUi(self)  ///调用setup方法

        self.ui.pushButton_stop.setEnabled(False)

app = QApplication([])

perfer = Ios_perfer()

perfer.show()

app.exec_()

3、编译运行通过后,ui文件就转换为py文件,这时候通过pyinstaller打包就是完成的exe,不依赖其它外部文件了。

你可能感兴趣的:(Python,python,qt)