本章节讲述基于Pycharm环境,使用Python开发XMODEM软件升级工具的过程。阅读本章节需要具备一定的Python基础,故本章节不在讲述Pycharm安装和Python基础语法,而Python的库如何安装,使用百度搜索就可以了。开发的Python版本是V3.8,Windows是Win7。希望阅读完本文章的博友能大概了解如何在Python环境适应PYQT5库设计Windows窗口界面,当然能动手操作效果最佳。
一: 基于PYQT5使用Qt Designer设计界面
PYQT5是一款用于开发图形界面的库,可以方便的开发各种复杂的界面,但XMODEM升级工具的界面比较简单,因此本小节能介绍到的PYQT5的功能不多,希望对初学者起到抛砖引玉的作用。
1.1: 通过Python调出Qt Designer

1.2: 创建新的窗口
Qt Designer出来后,选择Widget,然后点击创建即可。
说明下: Main Window用于创建带有菜单的主窗口,而Widget创建无菜单的主窗口。

创建完成后,把鼠标放在新窗口的边上,会出现箭头,可以通过箭头调整窗口的大小。
把完新窗口保存到文件夹,并命名为Layout.ui。

1.3: 把Layout.ui转换成代码

转成代码后,可以看到,Layout.py和相关的代码

1.4: 添加显示窗口的代码
点击右键运行代码,未能看懂窗口,那是因为还未添加显示代码。

添加显示窗口的代码,代码中绿色部分。
from PyQt5 import QtCore, QtGui, QtWidgets
class UiMainWindow(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(673, 548)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MyMainWindow = QtWidgets.QMainWindow()
MyUi = UiMainWindow()
MyUi.setupUi(MyMainWindow)
MyMainWindow.show()
sys.exit(app.exec_()) # app.exec_()是类中的一个循环监听方法
点击运行代码,出现空白的窗口,如下图。

主窗口的左上角的“Form”,可以在QtDesigner修改,修改方法如下:
鼠标随便电解QtDesigner界面中主窗口,在窗口右边,找到windowTitle,修改名称。

1.5: 显示窗口代码与Layout布局代码分离
在设计主窗口界面时,会出现添加新功能,然后同步至Python,再转换成Python代码;如果Layout的代码与显示主窗口的未分离,每次转换成Python代码时,都是把显示主窗口代码弄丢,很时烦人,所以这两部分代码必须要分离。分离方法如下。
1: 新建一个Main.py的文件。


后续所有逻辑功能的代码都在Main.py里实现,当然也可以把各种不同的逻辑分到多个文件。因为XMODEM升级工具比较简单,所以没必要这么做。
1.6: 显示窗口的代码放到Main.py
在Main.py里创建一个新的类,用于实现各种逻辑,在类的初始化里实现窗口显示。
from Layout import Ui_MainWindow
from PyQt5 import QtWidgets,QtGui,QtCore
class MyMainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # 从Layout文件中,继承Ui_MainWindow类
def __init__(self, parent=None):
super(MyMainWindow, self).__init__(parent) # 使用父类初始化
self.setupUi(self) # 初始化QDialog界面
#self.myWindowInit() # 所有窗口初始化
return
# *************************************************************************************
# 逻辑代码区
# *************************************************************************************
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
myUiWindow = MyMainWindow()
myUiWindow.show()
sys.exit(app.exec_()) # app.exec_()是类中的一个循环监听方法
同时,需要把Layout.py里的显示代码注释掉,否则会报错。

刚才修改了主窗口名称为“XMODEM”,保存后,在Pychar重新转换成python代码后,上图注释部分已消失,运行“Main.py”,出现同样的窗口。
1.7: 设计自己喜欢的窗口界面
Qt Designer设计窗口界面非常友好,需要什么样的功能,直接把鼠标按住左边的功能框,拖到右边的窗口即可。在把功能框拖到右边时,Qt Designer直接建立一个类,注意在Python中,所有的信息都是以类的形式存在,小到一个字节,大到主窗口。
XMODEM需要以下功能框:
1: 标签Label,标识各种信息,对应Qt Designer左边窗口的Display Widgets中的Label。如果有多的标签,将按序号先后顺序出现,下图。

2: 选择框Combo Box,对应Qt Designer左边窗口的Input Widgets中的Combo Box。如果有多的选择框,将按序号先后顺序出现,下图。

3: 按钮Button,对应Qt Designer左边窗口的Buttons中的Push Button。如果有多的按钮,将按序号先后顺序出现,下图。

4: 进度显示条Progress Bar,对应Qt Designer左边窗口的Display Widgets中的Progress Bar。如果有多的进度显示条,将按序号先后顺序出现,下图。

5: 单行输入框Line Edit,对应Qt Designer左边窗口的Input Widgets中的Line Edit。如果有多的单行输入框,将按序号先后顺序出现,下图。

6: 多行文本显示框Text Browser,对应Qt Designer左边窗口的Input Widgets中的Text Browser。如果有多的单行输入框,将按序号先后顺序出现,下图

各个功能框可以行对齐或者列对齐等方式对齐,还可以把各个功能框合并,合并后的功能框再对齐。
所有的功能框都可以设定默认值,Python代码运行后,功能框的数值都是以设定的默认值出现。
至此,XMODEM所有的功能框添加和设计完成。
7: 保存窗口,设计好的界面转换成python代码,Layout.py出现新的代码,运行Main.py,结果如下。

1.8: 显示窗口的代码放到Main.py
Layout.py源代码:
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(obj

最低0.47元/天 解锁文章
1250

被折叠的 条评论
为什么被折叠?



