PyQt5编写简单界面

PyQt5编写简单界面


环境配置

Requirements:
Python
PyQt5(Python和PyQt5可以通过anaconda傻瓜式安装)
QtCreator

QtCreator界面设计

step1: 新建Qt界面设计器项目

这里写图片描述

step2: 设计界面

这里写图片描述

step3: 将ui文件转换成肮脏的py文件
pyuic5 mainwindow.ui > mainwindow_ui.py

转换后的文件其实就是用python代码写的界面,如果会直接写的话可以不使用界面设计器。
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

import face_recognition
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QFileDialog
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(783, 729)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(20, 20, 751, 411))
        self.widget.setObjectName("widget")
        ...

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        self.pushButton.clicked.connect(self.openFileNamesDialog)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Face Recognition Demo"))
        self.groupBox.setTitle(_translate("MainWindow", "Input Image"))
        ...

将signal和slot连起来

为了不破坏设计器生成的文件,另写一个ui的包装类,在该类里面定义回调函数并与ui成员变量事件相绑定,如:
ui = Ui_MainWindow()
def __init__(self, parent=None):
    QtWidgets.QWidget.__init__(self, parent)
    self.timerForShowCam.timeout.connect(self.draw)
    self.timerForDetect.timeout.connect(self.drawDetectResult)
    self.ui.label_2.clicked.connect(self.ui.slotLabel2Clicked)  

重写控件事件,自定义消息

比如我的项目里面想要完成label的clicked消息回调,但是标准label没有clicked消息,这个时候就要涉及控件事件的重写了,与C++类似,给出实现示例:
继承QtWidgets.QLabel并重写其鼠标点击事件,发出clicked消息。
class ClickedLabel(QtWidgets.QLabel):
    clicked = QtCore.pyqtSignal()
    def mousePressEvent(self, QMouseEvent):
        super().mousePressEvent(QMouseEvent)
        self.clicked.emit()

改变QGroupBox的样式

在Qt设计器中或者之间在python代码中插入代码段:

self.groupBox.setStyleSheet("QGroupBox{\n"
                                    "border-width:2px;\n"
                                    "border-style:solid;\n"
                                    "border-radius: 10px;\n"
                                    "border-color:gray;\n"
                                    "margin-top:0.5ex;\n"
                                    "}\n"
                                    "QGroupBox::title{\n"
                                    "subcontrol-origin:margin;\n"
                                    "subcontrol-position:top left;\n"
                                    "left:10px;\n"
                                    "margin-left:0px;\n"
                                    "padding:0 1px;\n"
                                    "}")

主函数

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    faceApp = faceRecGUI()
    faceApp.show()
    sys.exit(app.exec_())
PyQt5界面设计可以使用PyQt5的标准工具Designer来实现。Designer是一款可视化界面设计工具,可以帮助我们轻松创建界面元素。要安装和使用Designer,你可以在网上搜索相关的教程(视频)来进行参考,特别是在优快云上有很多相关的教程和参考内容。如果你懂英语,还可以找到更多的参考资源。想了解界面设计元素的分类,你可以参考一下相关的文档和教程。至于具体的使用方法,你可以按照下面的步骤来进行操作: 1. 首先,你需要导入PyQt5的模块和QtWidgets模块。 2. 创建一个QApplication实例。 3. 创建一个QWidget实例,作为主窗口。 4. 创建一个Ui_Form实例,并调用它的setupUi()方法,将QWidget作为参数传入。这样就可以将设计好的界面元素加载到主窗口中。 5. 调用QWidget的show()方法,显示主窗口。 6. 最后,调用QApplication的exec_()方法,启动事件循环,使程序保持运行状态。 以上就是使用Designer进行PyQt5界面设计的基本步骤,你可以根据具体的需求进行进一步的开发和定制化控件。如果你想了解更多关于PyQt5界面设计的内容,可以参考引用中提供的系列教程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [PyQt5桌面应用开发(4):界面设计](https://blog.youkuaiyun.com/withstand/article/details/129736172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值