1、如何使用QTDesign 设计页面
在pycharm 中,接入两个工具,一个是QTDesigner,PyUIC
然后打开QTDesigner就可以进行界面的设计
设计好想要的界面后,保存为.ui文件,这时候返回pycharm,找到对应的.ui文件,右键选择external tool,选择PyUIC,就会生成对应的.py文件,这个文件就已经是从用python写的界面程序了,如下图中的mainUI.py文件。
2、如何把这个界面程序运行起来
直接运行这个mainUI.py 是不会出现窗口的,需要额外的加几行程序。
可以直接在mainUI.py 文件最后添加:
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv) # 创建一个QApplication,也就是要开发的软件app
MainWindow = QtWidgets.QMainWindow() # 创建一个QMainWindow,用来装载需要的各种组件、控件
ui = Ui_MainWindow() # ui是Ui_MainWindow()类的实例化对象
ui.setupUi(MainWindow) # 执行类中的setupUi方法,方法的参数是第二步中创建的QMainWindow
MainWindow.show() # 执行QMainWindow的show()方法,显示这个QMainWindow
sys.exit(app.exec_()) # 使用exit()或者点击关闭按钮退出QApplicat
这种方式可以用来看一下界面是不是想要的界面。实际操作过程中,一般喜欢把界面和逻辑分开,简单来说就是mainUI.py 中只存界面的程序,不存其他的,到时候要改界面的时候就只需要更新这个文件就行了,很方便。
ps:虽然用QTDesigner来设计界面简单、快捷且美观,但是有时候直接在mainUI.py中写程序也很方便,并且必要的时候就是需要在里面直接写。
3、如何实界面和逻辑分开
上面说到了逻辑和界面分离,其实简单来说就是逻辑在另一个.py文件中写。建立一个新的文件,把界面程序import 进去。
在逻辑文件主窗口继承界面主窗口类(Ui_MainWindow)
然后就在这个类里面定义实现逻辑的函数。
同时,要运行这个文件也需要加入主程序:
if __name__ == '__main__':
app = QApplication(sys.argv) #必备
myMainrun=Mainrun()
myMainrun.show()
sys.exit(app.exec_()) #必备
然后就在里面改改改就可以啦。
4、关于一些觉得复杂的事情
(1)将matplotlib 绘制的内容显示到页面上,而非单独plt.show()弹出一个子框
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import matplotlib.pyplot as plt
#画布设置
self.figure=plt.figure()
self.ax1= self.figure.add_subplot()
self.canvas=FigureCanvas(self.figure)
self.verticalLayout.addWidget(self.canvas) #将绘图链接到控件上
但是这样弄出来的图,就是一张图片的显示,没法放大缩小。
FigureCanvas的具体见这篇博客https://blog.csdn.net/qq_28485501/article/details/85329343
有空再写。