【PyQt5】PyQt5 信号和槽

news2024/9/27 7:21:06
	基于GUI的应用程序是事件驱动的。函数或方法按照用户的操作(例如点击按钮、从集合中选择项目或点击鼠标等)来执行,这些操作被称为 事件 。
	用于构建GUI界面的小部件充当这些事件的来源。每个PyQt小部件都是从QObject类派生而来,设计为响应一个或多个事件而发出 信号 。信号本身不执行任何操作,而是与一个 槽 连接。槽可以是任何可调用的Python函数。

1.使用Qt Designer的信号/槽编辑器

首先,从编辑菜单中选择编辑信号/槽(或按下F4)。然后用鼠标突出显示按钮,并将光标拖向文本框。
在这里插入图片描述
当鼠标释放时,会显示一个对话框,其中显示按钮的信号和槽的方法。选择clicked信号和clear()方法。
在这里插入图片描述

**clear:**清除对应框中内容
**copy:**复制(搭配全选一起使用,先全选框,再复制)
**cut:**剪切(搭配全选一起使用,先全选框,再复制)
**paste:**粘贴(搭配全选一起使用,先全选框,再粘贴,要不然就是追加写入)
**redo:**重做(与撤销搭配使用,恢复刚刚的输入)
**selectall:**全选
**undo:**撤销(撤销刚刚的输入)

源代码如下:

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

# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.15.10
#
# 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")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(220, 20, 113, 21))
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(60, 20, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_2.setGeometry(QtCore.QRect(220, 60, 113, 21))
        self.lineEdit_2.setObjectName("lineEdit_2")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(60, 60, 93, 28))
        self.pushButton_2.setObjectName("pushButton_2")
        self.lineEdit_3 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_3.setGeometry(QtCore.QRect(220, 100, 113, 21))
        self.lineEdit_3.setObjectName("lineEdit_3")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(60, 100, 93, 28))
        self.pushButton_3.setObjectName("pushButton_3")
        self.lineEdit_4 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_4.setGeometry(QtCore.QRect(220, 150, 113, 21))
        self.lineEdit_4.setObjectName("lineEdit_4")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(60, 150, 93, 28))
        self.pushButton_4.setObjectName("pushButton_4")
        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(110, 290, 93, 28))
        self.pushButton_5.setObjectName("pushButton_5")
        self.lineEdit_6 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_6.setGeometry(QtCore.QRect(220, 200, 113, 21))
        self.lineEdit_6.setObjectName("lineEdit_6")
        self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_6.setGeometry(QtCore.QRect(60, 200, 93, 28))
        self.pushButton_6.setObjectName("pushButton_6")
        self.pushButton_9 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_9.setGeometry(QtCore.QRect(10, 290, 93, 28))
        self.pushButton_9.setObjectName("pushButton_9")
        self.lineEdit_8 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit_8.setGeometry(QtCore.QRect(220, 290, 113, 21))
        self.lineEdit_8.setObjectName("lineEdit_8")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.pushButton.clicked.connect(self.lineEdit.clear) # type: ignore
        self.pushButton_4.clicked.connect(self.lineEdit_4.paste) # type: ignore
        self.pushButton_6.clicked.connect(self.lineEdit_6.selectAll) # type: ignore
        self.pushButton_9.clicked.connect(self.lineEdit_8.undo) # type: ignore
        self.pushButton_6.clicked.connect(self.lineEdit_6.copy) # type: ignore
        self.pushButton_2.clicked.connect(self.lineEdit_2.selectAll) # type: ignore
        self.pushButton_2.clicked.connect(self.lineEdit_2.copy) # type: ignore
        self.pushButton_5.clicked.connect(self.lineEdit_8.redo) # type: ignore
        self.pushButton_3.clicked.connect(self.lineEdit_3.selectAll) # type: ignore
        self.pushButton_3.clicked.connect(self.lineEdit_3.cut) # type: ignore
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.lineEdit.setText(_translate("MainWindow", "1"))
        self.pushButton.setText(_translate("MainWindow", "清除"))
        self.lineEdit_2.setText(_translate("MainWindow", "2"))
        self.pushButton_2.setText(_translate("MainWindow", "复制"))
        self.lineEdit_3.setText(_translate("MainWindow", "3"))
        self.pushButton_3.setText(_translate("MainWindow", "剪切"))
        self.lineEdit_4.setText(_translate("MainWindow", "4"))
        self.pushButton_4.setText(_translate("MainWindow", "粘贴"))
        self.pushButton_5.setText(_translate("MainWindow", "重做"))
        self.lineEdit_6.setText(_translate("MainWindow", "6"))
        self.pushButton_6.setText(_translate("MainWindow", "全选"))
        self.pushButton_9.setText(_translate("MainWindow", "撤销"))
        self.lineEdit_8.setText(_translate("MainWindow", "8"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Redis设计与实现》读书笔记-复制

目录 1.概述 2.复制命令 3.部分重同步过程 4.部分重同步实现 4.1复制偏移量 4.2复制积压缓冲区 4.3服务器运行ID 5.总结 1.概述 在redis 通过向从服务器发送命令:SLAVE OF,让从服务器复制主服务器,成为复制。 复制的目的 让从服务器…

等保测评 linux设置三权分立

1、首先浅谈一下目录结构 drwxr-xr-x意思如下:第一位表示文件类型。 d是目录文件,l是链接文件,-是普通文件,p是管道。后面的分三个三个来看,即 rwx 、r-x 、r-x。 第一个: root :r 是可读&#…

在Linux中认识pthread库

int *pnullptr; pnullptr; *pnullptr; 指针变量做右值也是变量拥有空间。去承装数据。 *p代表指针所指向的空间,及0号地址,及往虚拟地址的0号地址处写8个字节的数据,全部写为0. (此操作不允许) 进程和线程的关系如…

Python PDF文本处理技巧 - 查找和高亮文字

目录 使用工具 Python在PDF中查找和高亮文字并统计出现次数和页码 Python在PDF的特定页面区域中查找和高亮文字 Python使用正则表达式在PDF中查找和高亮文字 Python在PDF中查找文字并获取它的坐标位置 其他查找条件设置 在日常工作和学习中,我们常常需要处理各…

命令-响应框架在 ESP RainMaker 中的应用

【如果您之前有关注乐鑫的博客和新闻,那么应该对 ESP RainMaker 及其各项功能有所了解。如果不曾关注,建议先查看相关信息,知晓本文背景。】 在 ESP RainMaker 中,管理员用户可以查看一些基本的节点数据,包括类型、型…

【Liunx】线程与进程的经典面试题总结

在这个浮躁的时代 只有自律的人才能脱颖而出 -- 《觉醒年代》 线程与进程的面试题总结 1 简述什么是LWP2 简述LWP与pthread_create创建的线程之间的关系3 简述轻量级进程ID与进程ID之间的区别4 请简述什么是线程互斥,为什么需要互斥5 简述你了解的进程间通信方式…

【免费测试】人脸身份证比对接口如何用Java对接?(二)

一、什么是人脸身份证比对? 人脸身份证比对又称人证比对,实人比对,人像比对,输入姓名、身份证号码和头像照片,与公安库身份证头像进行权威比对,返回分值作为判断依据。 二、人脸身份证比对接口适用哪些场…

安科瑞智慧能源管理平台在电动汽车虚拟电厂优化调度起到什么作用?

摘要:大量电动汽车用户的无序充电可能造成电网负荷剧烈波动,危及电网的安全稳定。随着电动汽车入网技术的应用,将电动汽车充电站及其周边的分布式新能源发电聚合为虚拟电厂后进行优化调度,有助于改善电动汽车用户充放电的经济性及…

深入LVS内核世界:揭秘其高效背后的技术细节与实现机制

LVS简介 Linux virtual server,即Linux虚拟服务器,是一种基于Linux平台的高性能、高可用的服务器负载均衡技术。它主要工作在网络层、传输层(OSI参考模型的第三层、第四层),主要通过IP地址和端口号来转发网络流量。LV…

【Dash】Web 应用程序中的可复用组件

一、Reuable Comopnents By writing our makup in Python, we can create complex reusable components like tables without switching contexts or languages. from dash import Dash, html import pandas as pddf pd.read_csv(https://raw.githubusercontent.com/GarciaS…

程序包javax.annotation不存在

1、问题 程序包javax.annotation不存在2、原因 JDK1.8升级到17后,由于Java EE已经变更为Jakarta EE,包名以 javax 开头的需要改为 jakarta 3、解决 import javax.annotation.Resource; 替换成 import jakarta.annotation.Resource; 问题解决。 …

基于STM32开发的智能灌溉系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 农业灌溉园艺灌溉常见问题及解决方案 常见问题解决方案结论 1. 引言 智能灌溉系统通过监测土壤湿度和环境条件,自动控制水泵和阀门,实现…

Linux系统驱动(十)设备树

文章目录 一、简介二、设备树语法(一)设备树的组成1. 节点的组成(1)节点的别名(2)节点可以被引用(3)同名节点的合并 2. 属性的组成(1)值的字符串表示形式&…

基于STM32开发的停车场管理系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 商业停车场管理住宅区停车场管理常见问题及解决方案 常见问题解决方案结论 1. 引言 停车场管理系统通过监测车辆进出情况、空余车位数量以及收费情况&#xff0…

7.2 算法设计与分析-分治法和回溯法

分治法 相对简单,考的概率比较低 分治法:对于一个规模为的问题,若该问题可以容易地解决则直接解决;否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解决这些子问题&…

Proxmox Install 8

Proxmox 前言 Proxmox Virtual Environment(简称PVE)是一个开源的服务器虚拟化解决方案,它基于QEMU/KVM和LXC技术。Proxmox VE提供了一个易于使用的Web界面和命令行工具,允许用户轻松地创建和管理虚拟机(VMs)和容器。 Proxmox download Proxmox 官网下载Proxmox 百度网…

Midjourney入门-提示词基础撰写与公式

​ 前言 在前几篇教程里我们已经可以初步使用Midjourney进行出图了。 包括也了解了Midjourney的指令与参数。 但如果你想用Midjourney去生成各种各样高质量的图片, 并且生成的图片是你想要的画面内容,也就是更好控制生成图片的画面内容与风格&#xf…

电脑小白需要知道这些

电脑小白需要知道这些 解决问题 对于刚买到电脑,不懂电脑的新手需要学什么和知道什么,有什么是误区 需要知道 1.Wiodws 10\Windows11不在需要安装杀毒软件 甚至于电脑自带防火墙都可以关闭(有时候打开了防火墙反而导致一些奇奇怪怪的问题…

【书生大模型实战营】基础岛-浦语提示词工程实践

【书生大模型实战营】基础岛-浦语提示词工程实践 活动地址:地址 任务 背景问题:近期相关研究发现,LLM在对比浮点数字时表现不佳,经验证,internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题,例如认为…

生成式AI,在中国工业找到新“活法”

生成式AI,正在经历一场关于落地前景的论战。 在德国中北部城市希尔德斯海姆,世界工业巨头博世已经把生成式AI技术用在了生产线上。他们以AI仿真绘制的方式合成出超过15000张关于产品缺陷的图片,然后将其应用于电机定子生产线的质检。借助生成…