【PyQt5篇】多线程

文章目录

  • 🍔使用QtDesigner进行设计
  • 🛸实现多线程
    • 🌹效果
    • 🔎原因

在这里插入图片描述

🍔使用QtDesigner进行设计

在这里插入图片描述

在这里插入图片描述
对应的代码btn.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>Form</class><widget class="QWidget" name="Form"><property name="geometry"><rect><x>0</x><y>0</y><width>400</width><height>205</height></rect></property><property name="windowTitle"><string>Form</string></property><widget class="QLineEdit" name="lineEdit"><property name="geometry"><rect><x>90</x><y>60</y><width>231</width><height>31</height></rect></property></widget><widget class="QPushButton" name="pushButton"><property name="geometry"><rect><x>90</x><y>130</y><width>93</width><height>28</height></rect></property><property name="text"><string>按钮1—卡</string></property></widget><widget class="QPushButton" name="pushButton_2"><property name="geometry"><rect><x>230</x><y>130</y><width>93</width><height>28</height></rect></property><property name="text"><string>按钮2—不卡</string></property></widget></widget><resources/><connections/>
</ui>

🛸实现多线程

代码如下

import sysimport time
from PyQt5 import uic
from PyQt5.QtCore import QThread
from PyQt5.QtWidgets import QApplication, QWidgetclass MyThread(QThread):def __init__(self):super().__init__()def run(self):for i in range(5):print("是线程中执行...%d" % (i+1))time.sleep(1)class MyWin(QWidget):def __init__(self):super().__init__()self.init_ui()def init_ui(self):self.ui=uic.loadUi('./bun.ui',self)lineedit=self.ui.lineEditbtn1=self.ui.pushButtonbtn2=self.ui.pushButton_2# 绑定槽函数btn1.clicked.connect(self.click_1)btn2.clicked.connect(self.click_2)def click_1(self):for i in range(5):print("================= 卡的线程  =================中执行...%d"%(i+1))time.sleep(1)def click_2(self):self.my_thread=MyThread()self.my_thread.start()if __name__ == '__main__':app = QApplication(sys.argv)mywin = MyWin()mywin.ui.show()app.exec()

🌹效果

我们点击第一个按钮后,不能向文本框里面输入内容
直到循环结束
在这里插入图片描述
当我们按第二个按钮的时候,能够输入内容
在这里插入图片描述

🔎原因

一个线程是在主线程(UI线程)中运行的,当在主线程中执行耗时操作时(例如click_1方法中的for循环),它会阻塞主线程,导致界面无响应。

另一方面,使用QThread创建的线程会在后台运行,不会阻塞主线程。这是因为QThread类提供了一个事件循环,可以在后台处理线程的任务,而不会影响到线程的响应性。(这个属于自己创建的线程,不属于主线程

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

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

相关文章

边界值设计测试用例

​ 边界值分析法&#xff08;Boundary Value Analysis&#xff0c;BVA&#xff09;的测试用例来自于等价类的边界&#xff0c;是等价类划分法的补充。根据边界值划分法&#xff0c;等价类分析法中的测试数据不是选取等价类中的典型值或任意值&#xff0c;而是应当选取正好等于、…

C++语言学习(三)——内联函数、auto、for循环、nullptr

1. 内联函数 &#xff08;1&#xff09;概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调 用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 内联函数是一种编译器指令&#xff0c;用于告诉编译器…

Web3 革命:揭示区块链技术的全新应用

随着数字化时代的不断发展&#xff0c;区块链技术作为一项颠覆性的创新正在改变着我们的世界。而在这一技术的进步中&#xff0c;Web3正逐渐崭露头角&#xff0c;为区块链技术的应用带来了全新的可能性。本文将探讨Web3革命所揭示的区块链技术全新应用&#xff0c;并展望其未来…

Redis从入门到精通(四)Redis实战(一)短信登录

文章目录 前言第4章 Redis实战4.1 短信登录4.1.1 基于session实现短信登录4.1.1.1 短信登录逻辑梳理4.1.1.2 创建测试项目4.1.1.3 实现发送短信验证码功能4.1.1.4 实现用户登录功能4.1.1.5 实现登录拦截功能4.1.1.6 session共享问题 4.1.2 基于Redis实现短信登录4.1.2.1 Key-Va…

顺子日期(结果填空)

为了解决这个问题&#xff0c;我们需要遍历2022年的每一天&#xff0c;并检查日期的每一位数字以查找顺子。下面是一个Java程序&#xff0c;用于计算2022年中的顺子日期数量&#xff1a; public class Main {public static void main(String[] args) {int count 0; for (int…

[StartingPoint][Tier0]Preignition

Task 1 Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (ii) dir busting, (iii) hash cracking. (目录暴力破解是一种用于检查 Web 服务器上的大…

leetcode代码记录(有效的字母异位词

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断它们是不是一组变位词&#xff08;字母异位词&#xff09;。 注意&#xff1a;若 s 和 t 中每个字符出现的次数都相同且字符顺序…

【简单讲解下epoll】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

循环神经网络:揭秘长期记忆的魔法之源

在人工智能和机器学习领域&#xff0c;循环神经网络&#xff08;Recurrent Neural Networks&#xff0c;简称RNN&#xff09;以其独特的架构和机制&#xff0c;在处理序列数据方面展现出了强大的能力。特别值得一提的是&#xff0c;RNN能够学习到长期的记忆&#xff0c;这使得它…

ubuntu-server部署hive-part1-安装jdk

参照 https://blog.csdn.net/qq_41946216/article/details/134345137 操作系统版本&#xff1a;ubuntu-server-22.04.3 虚拟机&#xff1a;virtualbox7.0 安装jdk 上传解压 以root用户&#xff0c;将jdk上传至/opt目录下 tar zxvf jdk-8u271-linux-x64.tar.gz 配置环境变量…

网址打包微信小程序源码 wap转微信小程序 网站转小程序源码 网址转小程序开发

内容目录 一、详细介绍二、效果展示2.效果图展示 三、学习资料下载 一、详细介绍 我们都知道微信小程序是无法直接打开网址的。 这个小程序源码提供了一种将网址直接打包成微信小程序的方法&#xff0c; 使得用户可以在微信小程序中直接访问这些网址内容。 这个源码没有进行加…

律所如何做好内容运营,提升品牌影响力

近年来&#xff0c;随着品牌推广方式的改变&#xff0c;中国律所也开始关注内容营销&#xff0c;期待能够凭借内容营销增强影响力。今天&#xff0c;媒介盒子就从内容传播的逻辑出发&#xff0c;和大家聊聊律所如何做好内容运营&#xff0c;提升品牌影响力。 一、品牌形象管理 …

蜂窝物联:智慧禽畜养殖解决方案

蜂窝物联&#xff1a;智慧禽畜养殖解决方案是基于物联网技术&#xff0c;在线监测动物生长的环境信息&#xff0c;通过氨气传感器、二氧化碳传感器、湿度传感器等设备监测舍内的各项环境参数&#xff0c;自动把畜舍内的实时环境参数上传至监控软件平台&#xff0c;并联动控制风…

C++11特性详解(万字)

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 统一的初始化列表 {}初始化 这种初始化方式我们建议用第一种&#xff0c;但是以后看见下面两种也不要感到疑惑&#xff0c;是可以这样初始化的。 内置类型初始化 int main() {int a 1;int b { 1 };int c{ 1 };return 0…

kubectl explain资源文档命令

学习并使用了一段时间的kubernetes&#xff0c;发现对k8s还是了解甚少&#xff0c;于是利用上下班通勤的时间又去B站看一些大佬的视频&#xff0c;又来重学巩固一遍知识&#xff0c;并做些记录。 之前在学习使用过程中未成了解过explain这个命令&#xff0c;因为自己部署的版本…

Java笔试题总结

HashSet子类依靠()方法区分重复元素。 A toString(),equals() B clone(),equals() C hashCode(),equals() D getClass(),clone() 答案:C 解析: 先调用对象的hashcode方法将对象映射为数组下标,再通过equals来判断元素内容是否相同 以下程序执行的结果是&#xff1a; class X{…

Linux:权限篇

文章目录 前言1.用户2.文件的权限管理2.1 修改文件的权限2.2 修改文件的拥有者2.3 修改文件的所属组 3.file指令4.umask指令4.目录的权限管理总结 前言 Linux权限在两个地方有所体现&#xff0c;一种是使用用户&#xff1a;分为root超级用户员与普通用户。另一个是体现在文件的…

【数据结构与算法】力扣 24. 两两交换链表中的节点

题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a; head [1,2,3,4] 输出&#…

IDEA2023创建SpringMVC项目

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 开发环境篇 ✨特色专栏&#xff1a; M…

Linux使用docker集群部署

目录 一&#xff0c;环境准备 1.1.安装docker 1.2.配置镜像就加速器 二&#xff0c;docker部署 2.1.创建网络 ​编辑 2.2.安装redis 2.3.安装MySQL 2.4.安装JDK,TomCat及部署后台项目 2.5.安装Nginx及配置静态资源 一&#xff0c;环境准备 1.1.安装docker 安装yum-u…