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、依次重复上述提到的操作,直至到下面的情况

依次输入文本、对象名:

  • &Replace】、【replaceButton】;

  • Replace &All】、【replaceAllButton】;

  • Close】、【closeButton】。

在这里插入图片描述

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办公自动化的知识各位大佬给个关注吧!

  • 10
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值