PyQt5自制GUI的使用笔记(二)

本文介绍了如何使用Python的PyQt5库结合Qt Designer创建GUI界面,并通过继承和信号连接实现按钮点击事件。建议将界面代码与功能代码分离,以保护自定义功能不受QtUIC工具重新生成代码的影响。文中给出了一个Window类的示例,展示了如何初始化界面并添加按钮点击事件处理函数。此外,还强调了了解控件类及其内置信号和方法的重要性,以实现对GUI控件的自定义操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.继承

上一次我们使用了Qt UIC工具将自制的界面转化为了Image.py代码如下:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'Image.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        ......

  该部分代码只是完成了GUI界面的搭建,并未给相关的控件添加功能,但我并不建议在此代码内添加任何代码。因为一旦需要修改GUI界面时,再利用Qt UIC工具将修改后的界面转化为代码,添加的代码都会被清除。
  我推荐新建python文件,添加如下代码来完成对上述代码的继承,运行后就能出现自制的界面

from Image import Ui_MainWindow            # 此处Image需要根据你自己的命名修改
from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog


class Window(QMainWindow, Ui_MainWindow):  # 继承父类QMainWindow以及Image.py里的Ui_MainWindow
    def __init__(self):                    # 初始化
        super().__init__()                 # 继承父类所有的方法和属性
        self.setupUi(self)  # 虽然self指向自身类Window,在类Window并没有定义setupUi方法,但是super()继承了父
        # 类Ui_MainWindow内的方法setupUi,所以相当于类Window也有该方法               


if __name__ == '__main__':
    app = QApplication([])
    window = Window()  # 使用变量名为 window 来创建一个 类Window 的实例
    window.show()  # 创建 window 对象后,必须使用 .show() 使其可见。
    app.exec_()  # 事件循环

方法(init)里面存放类的属性(变量)和方法(函数)。self指向类(Window)本身,在类内定义的方法都必须带一个参数self,但在调用该方法时并不需要给其传递参数。

如果对于继承还有self用法不太明白,可以参考阅读以下文章

https://blog.youkuaiyun.com/baidu_31437863/article/details/82288172

二.给按钮控件添加关联的方法(处理函数)

直接上代码:

class Window(QMainWindow, Ui_MainWindow):  
    def __init__(self):                    
        super().__init__()                 
        self.setupUi(self) 
        self.start_button.clicked.connect(self.start) 

    def start(self):
        print('hello world')
        pass

start_button 是控件(button)的 objectName
clicked.connect(self.start) 表示当按钮控件点击时,执行start方法

如果你没有clicked.connect(),则需要安装包PyQt5-stubs后才能用该函数

三.各控件的使用方法

  一般使用较多的控件有Push Button , Label , Line Edit , Combo Box等,要想自定义控件的属性功能状态,我们需要知道这些控件内置了哪些方法或信号。
  首先我们需要找到该控件属于哪类,在Qt Designer的对象查看器可以查到
在这里插入图片描述
  找到该控件属于的类后,接下来就需要查找该类内置了哪些信号或函数方法供控件使用。
  我就不列出控件内置的信号或函数方法了,大家可以在优快云内输入该类就能找到很多博主的文章介绍了,在此推荐一个博主jia666666的Qt基本控件详解.
  赶紧开始你的设计吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值