PyQty5—第四课:GUI小程序界面设计(附完整代码)
·
在第一节课中我们已经学会了PyQty5的安装,以及配置好了两个环境,如果还没有看到的小伙伴可以前去考古:点我。今天我们将会继续学习PyQty5的设计界面的认识,也会带领大家一步一步设计出一个小GUI作品。
首先我们创建一个py文件,然后右击,点击上一节课中配置好的环境进入PyQty5的设计界面

1、点击左上角【File】新建一个【无按钮】的窗口

2、在左边 【Display Widgets】 中把 【Label 】拖入中间的窗体中

3、修改第一个标签的属性
输入 Find &What:,可以双击输入,或者右边改(&作用是加速键 Alt)

4、左边【 Input Widgets 】中把 【LineEdit】(行编辑) 拖入中间的窗体中

5、修改刚刚拖动的【LineEdit】(行编辑) 框的属性,修改名字:【findLineEidt】
修改此行编辑框的对象名(作用是在后面的实际代码编写中,还可以用到,因此取一个有意义的名字)
操作类似代码中:
findLineEidt =QLabel()
6、重复上面两个操作,变成下面这样
第二个标签的文本为【
Replace w&ith:】第二个行编辑框的对象名字为 【
replaceLineEidt】
7、在左边 【Buttons】 中把 【check Box】 拖入中间的窗体中
把复选框的文本改为【
&Case sensitive】,对象名改为【caseCheckBox】重复上述操作即可
8、重复上述操作
把复选框的文本改为【
Wh&ole words】,对象名改为【wholeCheckBox】
9、继续添加一个 Syntax 的标签
标签的文本设置为【
&Syntax:】
10、在左边 【Input Widgets】 中把 【Combo Box】 拖入中间的窗体中,取名为:【syntaxComboBox】

11、给组合框添加项目
右键点击组合框,选 Edit Items
输入【
Literal text】与【Regular expression】点击ok
12、在左边 【Spacers】 中把 【Vertical Spacer】 拖入中间的窗体中
如果用户重新修改了窗体的尺寸大小,如果希望各个窗口部件能够放在一起而不是分散开来,可以 Combo box 的下面放置一个竖直分隔符(Vertical Spacer)
13、在左边 【Display Widgets】 中把 【Vertical Line】 拖入中间的窗体中
要让这些按钮能够与已经创键的窗口部件在形式上区分开来,可以在它们和其他窗口部件之间放一根竖线。
14、在左边【 Buttons 】中把 【Push Button】 拖入中间的窗体中
按钮的文本为【
&Find】,对象名为【findButton】
15、依次重复上述提到的操作,直至到下面的情况
依次输入文本、对象名:

16设置第一个布局
CTRL+鼠标,选中以下控件,并点击点击网格布局
17、接下来的依次布局即可

对布局和控件,可以继续布局,可以如果选起来不方便,可以在右上角的停靠窗口选择

18、设置伙伴关系,F3 退出此状态
这一步就可以消除之前标签里的&,并且让伙伴功能上线。
19、设置 Tab 顺序
用默认即可,F3 退出
20、绑定 Close 的槽函数,拖动Close按钮至空白区域

依次选择 clicked()、reject()、ok,即把 Close 按钮绑定到主窗体的关闭函数

21、设定窗体类名、标题名、文件名
点击空白窗体处,右边修改窗体类名、标题名。
文件保存时,File->Save或者Ctrl+s

22、ui 转 py
点击我们上一步保存的ui文件
右击,然后利用上一节课的ui 转 py 环境进行转换

会上生成一个同名的 py 文件

尾部加上创建对象的代码,然后右击运行
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
mainWindow = QtWidgets.QDialog()
ui = Ui_FindAndReplaceDlg()
ui.setupUi(mainWindow)
mainWindow.show()
sys.exit(app.exec_())
ok,到此为止我们的界面设计完毕

刚刚视频的代码
# -*- coding: utf-8 -*-
#
# Created by: PyQt5 UI code generator 5.11.2
#
# WARNING! All changes made in this file will be lost!
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_FindAndReplaceDlg(object):
def setupUi(self, FindAndReplaceDlg):
FindAndReplaceDlg.setObjectName("FindAndReplaceDlg")
FindAndReplaceDlg.resize(424, 180)
self.line = QtWidgets.QFrame(FindAndReplaceDlg)
self.line.setGeometry(QtCore.QRect(297, 9, 20, 161))
self.line.setFrameShape(QtWidgets.QFrame.VLine)
self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line.setObjectName("line")
self.widget = QtWidgets.QWidget(FindAndReplaceDlg)
self.widget.setGeometry(QtCore.QRect(10, 9, 286, 158))
self.widget.setObjectName("widget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setObjectName("verticalLayout")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.label = QtWidgets.QLabel(self.widget)
self.label.setTextFormat(QtCore.Qt.AutoText)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.findLineEdit = QtWidgets.QLineEdit(self.widget)
self.findLineEdit.setObjectName("findLineEdit")
self.gridLayout.addWidget(self.findLineEdit, 0, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(self.widget)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
self.replaceLineEdit = QtWidgets.QLineEdit(self.widget)
self.replaceLineEdit.setObjectName("replaceLineEdit")
self.gridLayout.addWidget(self.replaceLineEdit, 1, 1, 1, 1)
self.verticalLayout.addLayout(self.gridLayout)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.caseCheckBox = QtWidgets.QCheckBox(self.widget)
self.caseCheckBox.setObjectName("caseCheckBox")
self.horizontalLayout.addWidget(self.caseCheckBox)
self.wholeCheckBox = QtWidgets.QCheckBox(self.widget)
self.wholeCheckBox.setChecked(False)
self.wholeCheckBox.setObjectName("wholeCheckBox")
self.horizontalLayout.addWidget(self.wholeCheckBox)
self.verticalLayout.addLayout(self.horizontalLayout)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.label_3 = QtWidgets.QLabel(self.widget)
self.label_3.setObjectName("label_3")
self.horizontalLayout_2.addWidget(self.label_3)
self.syntaxComboBox = QtWidgets.QComboBox(self.widget)
self.syntaxComboBox.setObjectName("syntaxComboBox")
self.syntaxComboBox.addItem("")
self.syntaxComboBox.addItem("")
self.horizontalLayout_2.addWidget(self.syntaxComboBox)
self.verticalLayout.addLayout(self.horizontalLayout_2)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout.addItem(spacerItem)
self.widget1 = QtWidgets.QWidget(FindAndReplaceDlg)
self.widget1.setGeometry(QtCore.QRect(316, 10, 99, 155))
self.widget1.setObjectName("widget1")
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget1)
self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.findButton = QtWidgets.QPushButton(self.widget1)
self.findButton.setObjectName("findButton")
self.verticalLayout_2.addWidget(self.findButton)
self.replaceButton = QtWidgets.QPushButton(self.widget1)
self.replaceButton.setObjectName("replaceButton")
self.verticalLayout_2.addWidget(self.replaceButton)
self.replaceAllButton = QtWidgets.QPushButton(self.widget1)
self.replaceAllButton.setObjectName("replaceAllButton")
self.verticalLayout_2.addWidget(self.replaceAllButton)
spacerItem1 = QtWidgets.QSpacerItem(20, 13, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
self.verticalLayout_2.addItem(spacerItem1)
self.closeButton = QtWidgets.QPushButton(self.widget1)
self.closeButton.setObjectName("closeButton")
self.verticalLayout_2.addWidget(self.closeButton)
self.label.setBuddy(self.findLineEdit)
self.label_2.setBuddy(self.replaceLineEdit)
self.label_3.setBuddy(self.syntaxComboBox)
self.retranslateUi(FindAndReplaceDlg)
self.closeButton.clicked.connect(FindAndReplaceDlg.reject)
QtCore.QMetaObject.connectSlotsByName(FindAndReplaceDlg)
def retranslateUi(self, FindAndReplaceDlg):
_translate = QtCore.QCoreApplication.translate
FindAndReplaceDlg.setWindowTitle(_translate("FindAndReplaceDlg", "Find and Replace"))
self.label.setText(_translate("FindAndReplaceDlg", "Find &what:"))
self.label_2.setText(_translate("FindAndReplaceDlg", "Replace with:"))
self.caseCheckBox.setText(_translate("FindAndReplaceDlg", "&Case sensitive"))
self.wholeCheckBox.setText(_translate("FindAndReplaceDlg", "Wh&ole words"))
self.label_3.setText(_translate("FindAndReplaceDlg", "&Syntax:"))
self.syntaxComboBox.setItemText(0, _translate("FindAndReplaceDlg", "Literal text"))
self.syntaxComboBox.setItemText(1, _translate("FindAndReplaceDlg", "Regular expression"))
self.findButton.setText(_translate("FindAndReplaceDlg", "&Find"))
self.replaceButton.setText(_translate("FindAndReplaceDlg", "&Replace"))
self.replaceAllButton.setText(_translate("FindAndReplaceDlg", "Replace &All"))
self.closeButton.setText(_translate("FindAndReplaceDlg", "Close"))
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
mainWindow = QtWidgets.QDialog()
ui = Ui_FindAndReplaceDlg()
ui.setupUi(mainWindow)
mainWindow.show()
sys.exit(app.exec_())
这是我们今天学习PyQty5的第 4 课,接下来我也会认真学习,下一节课我们来学习功能按钮的实现,本来打算写在这一节课上,但是一下子写太多,我脑子记不住,就留在下一节课讲吧!!
希望对大家有帮助
致力于办公自动化的小小程序员一枚#
都看到这了,关注+点赞+收藏=不迷路!!
如果你想知道更多关于Python办公自动化的知识各位大佬给个关注吧!
新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。
更多推荐



















所有评论(0)