PyQt5入门和常用模块(含多线程简单例子)

2023-05-16

1. 安装软件包

pip install PyQt5
pip install pyqt5-tools

2. 安装Qtdesigner

sudo apt-get install qt5-default qttools5-dev-tools
sudo apt-get install qt5-default qtcreator

3.pycharm中配置 external tools

在这里插入图片描述

4. Tools - external tools 打开 Qtdesigner

在这里插入图片描述

5.设计完成后转换为py文件

pyuic5 -o hsi.py hsi.ui

6.运行获得的py文件就会出现设计的界面了

用到的语句总结

  • textEdit 字符获取和显示
        str1 = ui.textEdit.toPlainText()
        ui.textEdit_2.setText(str1)
  • textEdit 追加字符串
str='要显示的字符串'
self.textEdit_2.append(str)
  • push button
        self.pushButton_2.setText(_translate("MainWindow", "浏览"))
        self.pushButton_2.clicked.connect(lambda: self.whichbtn(self.pushButton_2))
        self.pushButton_2.clicked.connect(self.btnstate)
        
    def btnstate(self):
        # isChecked():判断按钮的状态,返回值为True或False
        if self.pushButton_2.isChecked():
            print('button pressed')
        else:
            print('button released')

    def whichbtn(self, btn):
        # 输出被点击的按钮
        print('clicked button is ' + self.pushButton_2.text())

  • QPlainTextEdit
QPlainTextEdit.setPlainText()       #设置普通文本
QPlainTextEdit.insertPlainText()    #插入普通文本
QPlainTextEdit.appendPlainText()    #追加普通文本
  • 文件浏览
 1. 选取文件夹 QFileDialog.getExistingDirectory()  #返回字符串
 2. 选择文件 QFileDialog.getOpenFileName()   #返回元组
 3. 选择多个文件 QFileDialog.getOpenFileNames()
 4. 选择保存文件 QFileDialog.getSaveFileName()

多线程
  • 多线程-在单个程序中同时运行多个不同的线程完成不同的工作,称为多线程
  • 线程-轻量级进程,指正在执行程序的最小单元,一个进程当中至少必须有一个线程(主线程),在程序中,线程是独立的,可运行的流
  1. 每个线程有自己的堆栈,自己的程序计数器,自在相同己的局部变量,体现了线程的独立性
  2. 在相同的父进程下的所有线成共享进程内所有资源,可以实现线程间的消息互通
  3. 多个线程之间可以并发执行,互不影响

创建方式

  1. _thread
  2. threading
    使用threading 模块的Thread类的构造器创建新的线程
    继承threading 模块的Thread类创建线程类

示例1

import threading
#1.调用Thread类的构造器创建线程的方法,在创建线程对象时使用target参数指定函数线程的执行体
#2.调用线程的start方法启动该线程

def loop(x):
	print('thread {}  is running...'.format(threading.current_thread().name))
	for i in range(x):
		print('thread {}  >>> {}'.format(threading.current_thread().name,i))
if __name__=='__main__':
	print('thread {}  is running...'.format(threading.current_thread().name))
	t = threading.Thread(target=loop,args=(10,))
	t.start()

示例2

import threading
class MyThread (threading.Thread):
	def run(self):
		print('thread {}  is running...'.format(threading.current_thread().name))
	for i in range(10):
		print('thread {}  >>> {}'.format(threading.current_thread().name,i))

if __name__=='__main__':
	print('thread {}  is running...'.format(threading.current_thread().name))	
	t=MyThread()
	t.run()
	print('运行结束')

两个子线程示例
在这里插入图片描述
阻塞主线程

t1.join()
t2.join()

主线程结束后立即结束守护线程

t1.SetDaemon(daemonic=True)
t2.SetDaemon(daemonic=True)

pyqt多进程 QThraed

  1. 定义子进程的功能
class WorkThread(QThread):
    def __int__(self):
        super(WorkThread, self).__init__()

    def run(self):
        while 1:
            time.sleep(1)
            print('123')
  1. 创建实例, 打开子进程
self.workThread = WorkThread()
self.workThread.start()

警告: 在类内定义实例时一定要加self, 不然当函数结束后,它的生命周期也都结束了,但是这个线程里的程序很有可能还没有运行完,所以会报错
QThread:Destroyed while thread is still running

传递消息的例子

定义
    class WorkThread(QThread):
        trigger = pyqtSignal(str)
        def __int__(self):
            super(WorkThread, self).__init__()

        def run(self):
            ui.data_utils()
######################################################################
调用
        self.workThread = WorkThread()
        self.workThread.start()
        self.workThread.trigger.connect(self.print_in_textEdit)

    def print_in_textEdit(self, msg):
        self.plainTextEdit.appendPlainText(msg)
        self.workThread.exit()

keras 保存模型结构


from tensorflow.keras.utils import plot_model  
import pydotplus  
plot_model(lstm_test_model,to_file='lstm_test_model.png',show_shapes=True)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyQt5入门和常用模块(含多线程简单例子) 的相关文章

  • ajax请求携带自定义请求头header(跨域和同域)

    1 ajax跨域请求 xff08 无cookie 无header xff09 案例 xff08 java xff09 xff08 1 xff09 启动一个java web项目 xff0c 配置两个域名 xff08 host xff09 cz
  • VSCode如何直接打开html文件

    用VSCode的同行越来越多 xff0c 但是有人功能还不太熟练 xff0c 是不是有点小尴尬啊哈哈 功能实现 xff1a 直接打开Html 操作步骤 xff1a 快捷键 Ctrl 43 shift 43 x 打开vscode的应用商店 x
  • ubuntu18.04微信安装

    先安装一下wine wget O https deepin wine i m dev setup sh sh 若出现不能解析https的问题 xff0c 则 echo 39 nameserver 8 8 8 8 39 gt gt etc r
  • rstudio r语言_R语言的重大更新带来了巨大的变化

    rstudio r语言 用于统计计算的R语言版本4 0 0已发布 xff0c 其中对语言的语法以及与错误检查和长向量有关的功能进行了更改 升级版于4月24日发布 R 4 0 0的源代码可从cran r project org访问 R是一个G
  • 【千律】C++基础:编写实现自定义的字符串拼接函数

    include lt iostream gt using namespace std char strconnect char str 1 char str 2 int len 1 int len 2 初始化字符串 str 1 的 int
  • OpenWrt路由开启DDNS+端口转发进行外网访问

    OpenWrt路由开启DDNS 43 端口转发进行外网访问 xff08 LuCI界面实现 xff09 开篇一 准备工作二 开机 xff01 三 连接 结尾 开篇 本篇适用于一切装有OpenWrt系统的路由器 软路由 xff0c 只要你保证有
  • c语言概念题

    任何表达式语句都是表达式加分号组成的 C语言程序是从源文件的第一条语句开始执行的 xff08 x 从main函数开始执行 C 语言中的变量名区分大小写 运算符优先级以及结合方式 1 初等运算符 xff1a xff08 xff09 取结构体变
  • c 语言概念题【最全整理】

    任何表达式语句都是表达式加分号组成的 C语言程序是从源文件的第一条语句开始执行的 xff08 x 从main函数开始执行 C 语言中的变量名区分大小写 运算符优先级以及结合方式 1 初等运算符 xff1a xff08 xff09 取结构体变
  • python中变量的命名以及使用

    一 变量的概念 变量名只有在第一次出现的时候 xff0c 才是定义变量 当再次出现时 xff0c 不是定义变量 xff0c 而是直接使用之前定义的变量 1 变量命名 1 xff09 命名的规范性 变量名可以包括字母 数字 下划线 xff0c
  • WSL 导入导出迁移 相关命令

    wsl export Ubuntu D Ubuntu tar wsl unregister Ubuntu wsl import Ubuntu D Ubuntu D Ubuntu tar version 2 ubuntu exe config
  • 2019年3月PAT甲级认证经验教训总结~~~路还很长,慢慢来

    今天的PAT认证是我人生中的第二次算法考试 xff0c 第一次是六年前大一学习 C 语言时学校举行的算法比赛 跟第一次一样 xff0c 这次考得也非常失败 xff0c 只做出来前两道题 去年七月份辞职跨专业考研 xff0c 选了自己感兴趣的
  • ubuntu系统代理配置

    vim etc apt apt conf Acquire http proxy http username password 64 192 168 1 1 8080
  • Linux 软件包管理常用命令

    安装软件包 apt get install packagename 删除软件包 apt get remove packagename 更新软件包列表 apt get update 升级有可用更新的系统 xff08 慎用 xff09 apt
  • flask框架初学-11-解决跨域问题

    在前面的学习中 xff0c 我们都是在本地起服务 xff0c 再在本地访问资源及界面 xff0c 但是实际当中都是开启多台服务器 xff0c 提供给局域网外的用户访问 这就牵涉到了跨域问题 xff0c 跨域问题来源于同源策略 xff0c 同
  • CSP-序列查询新解(C++简单易懂)

    题目背景 上一题 序列查询 中说道 xff1a A 61 A0 A1 A2 An 是一个由 n 43 1 个 0 N 范围内整数组成的序列 xff0c 满足 0 61 A0 lt A1 lt A2 lt lt An lt N 基于序列 A
  • 九、51单片机之直流电机驱动

    目录 1 什么是电机 2 常见电机 2 1 交流电机 2 2 交流电机补充 可跳过 2 3 直流电机 2 4 步进电机 伺服电机 3 直流电机驱动 1 什么是电机 1 电机的全称是电动机 xff0c 把电能转换成动能的一种电器 2 外观 2
  • 【Linux】 Linux下查询CPU、内存、硬盘、服务器型号、出厂日期

    一 查看CPU 1 1 查看CPU个数 cat span class token operator span proc span class token operator span cpuinfo span class token oper
  • 1.5 字符

    输入 输出 getchar putchar 1 5 1 文件复制 include lt stdio h gt 将输入复制到输出 xff1b 版本1 main int c c 61 getchar while c 61 EOF putchar
  • docker基础学习入门(六)------ DockerFile解析

    DockerFile是什么 Dockerfile是用来构建Docker镜像的构建文件 xff0c 是由一系列命令和参数构成的脚本 构建三步骤 xff1a 编写Dockerfile文件docker builddocker run 构建的文件什
  • mysql小练习

    设教学数据库Education有三个关系 xff1a 学生关系S xff08 SNO xff0c SNAME xff0c AGE xff0c SEX xff0c SDEPT xff09 xff1b 学系关系SC xff08 SNO xff0

随机推荐

  • C++ 快速幂取模运算理解

    C 43 43 快速幂取模运算理解 概念非递归方法原理代码实例 递归方法原理代码实例 概念 快速幂运算也叫反复平方法 顾名思义 xff0c 算法就蕴含在名字中 非递归方法 原理 假设要求 x 2 x 2 x 2
  • 01迷宫(洛谷)

    题目描述 有一个仅由数字 000 与 111 组成的 n nn times nn n 格迷宫 若你位于一格0上 xff0c 那么你可以移动到相邻 444 格中的某一格 111 上 xff0c 同样若你位于一格1上 xff0c 那么你可以移动
  • VSCode + Latex +Texlive 编译 biber格式参考文献时 VSCode的配置方法

    34 editor fontSize 34 17 34 files autoSave 34 34 onFocusChange 34 34 latex workshop showContextMenu 34 true 34 latex wor
  • 更换国内镜像源进行pip安装【附带国内镜像源】

    Linux中当我们需要安装某个模块时 xff08 比如tensorflow2 0 0 xff09 xff0c 常见有三种方法 xff1a pip install tensorflow 61 61 2 0 0pip install https
  • C/C++中如何遍历枚举类型?

    在C 43 43 中 xff0c 写一段代码 xff0c 把某个enum中的所有元素放入到vector中 xff0c 方便遍历 假设有以下的枚举类型 xff1a span class token comment c 43 43 span s
  • 201609-3 炉石传说

    201609 3 炉石传说 题意描述 本题要求我们去模拟一款游戏的运行 xff0c 游戏分为双方 轮流操作 操作共有三种形式 summon attack end 输入输出格式 输入 n 接下来是 n 个操作 每个操作由字符串区分 后面是操作
  • 超详细Windows10/Windows11 子系统(WSL2)安装Ubuntu20.04(带桌面环境)+CUDA11.3+pytorch1.8.1+pycharm

    超详细Windows10 Windows11 子系统 xff08 WSL2 xff09 安装Ubuntu20 04 xff08 带桌面环境 xff09 user zhaowei的博客 CSDN博客 wsl 桌面环境 目录前言在Windows
  • 洛谷_P1825 [USACO11OPEN]Corn Maze S(尚贤)

    题目 xff1a https www luogu com cn problem P1825 span class token macro property span class token directive keyword include
  • 从知名软件提取出的神器,吊打一众付费

    前言 现在的软件功能虽然越更新越多 xff0c 但也是越来越臃肿了 xff0c 不仅占内存 启动慢 xff0c 老更新也怪麻烦的 你们应该也有过因为某个小功能挺好用而不忍心卸载整款软件的情况吧 今天给大家分享几款从知名软件中提取出来的小工具
  • Ubuntu 设置网络代理的一些配置

    因公司需求 xff0c 连接网络必须使用代理设置连接网络 xff0c 这里给大家分享一下我的配置步骤 xff01 如果以下这些不符合你的需求 xff1a 来看这个 xff1a ubuntu 内网搭建服务器的一些配置 xff0c 完美解决ht
  • Linux上git+gitee的基本使用

    目录 1 git 2 gitee 3 本地仓库建立和git基本使用 1 远程仓库同步到本地仓库 xff1a 2 提交本地仓库到远程仓库进行更新 如在本地代码仓库中新建了test1 txt和test2 txt文件或者对文件内容进行了修改 xf
  • java编程题练习2

    程序6 题目 xff1a 输入两个正整数m和n xff0c 求其最大公约数和最小公倍数 在循环中 xff0c 只要除数不等于0 xff0c 用较大数除以较小的数 xff0c 将小的一个数作为下一轮循环的大数 xff0c 取得的余数作为下一轮
  • 安装Anaconda后,cmd输入python没有结果

    可能是电脑上已经安装过python xff0c 在cmd中输入 where python 查看电脑上所有python解释器所在的路径 路径优先级最高的解释器 xff08 非Anaconda所在路径 xff09 出现损坏 xff0c 或由于其
  • 用python发送163邮件

    邮件是最早有用计算机通信的方式之一 xff0c 采用pop3协议接受邮件 xff0c smtp协议发送邮件 xff0c 基本上所有的计算机通信建立在tcp udp协议之上 xff0c 邮件传输协议也是不列外的 如果想要用编程语言发送邮件 x
  • 【AWS EC2】云端简单部署NodeJS应用

    根据需要启动想要的EC2 注意 xff1a 选择Linux时用x86而不是arm xff0c 不然kafka和zookeeper启动不了 xff08 在我的项目里 xff09 并且bitnami zookeeper latest需要内存超过
  • 在kali linux上安装git与push提交

    在kali linux上安装git与push提交 写在前面 xff1a 最好不要在root账户下创建 xff0c 在使用vscode时会带来好多问题 1 安装git apt get install git 2 添加git服务用户 邮箱 xf
  • 判断一颗二叉树是否为完全二叉树

    package main import 34 container list 34 思路 层序遍历 只需分两种情况 1 xff09 若当前节点左孩子为空右孩子不为空 直接返回不空 2 xff09 若当前节点的左右孩子不全 则其后面的节点必须都
  • 【mybatis-plus】mybatis-plus代码生成器,自动生成controller、service、dao、mapper、pojo代码,可灵活配置生成路径,程序猿的福音!!!

    在我们需要一些数据库的实体类时 xff0c 需要手动创建实体与类 xff0c 这很浪费时间 xff0c 所以我研究了一下和上网找了一些资料 xff0c 整合出了一套可灵活配置生成路径的代码 xff01 xff01 xff01 直接上代码 s
  • python爬虫:爬取携程航班数据

    python爬虫 xff1a 爬取携程航班数据 最近在学爬虫 xff0c 用携程的航班数据练手 xff0c 顺便记录一下 xff0c 话不多说下面开始 xff1a 一 首先来观察一下携程网的航班信息的网页 xff1a 这是一个携程网站的截图
  • PyQt5入门和常用模块(含多线程简单例子)

    1 安装软件包 pip span class token function install span PyQt5 pip span class token function install span pyqt5 tools 2 安装Qtde