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办公自动化的知识各位大佬给个关注吧!
更多推荐
已为社区贡献2条内容
所有评论(0)