Python脚手架系列-PyQt5

记录PyQt模块使用中的一些常常复用的代码

其他

导入界面
import sys

from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow
from UI.MainWindow import Ui_MainWindow  # 导入UI界面的类以供继承


class MyApp(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.setWindowTitle('设置窗口title')
        self.setWindowIcon(QIcon('res/news.png'))  # 设置界面左上角图标
        self.initialize()

    def initialize(self):
        # 此处绑定事件等
        pass


if __name__ == "__main__":
    app = QApplication(sys.argv)
    myapp = MyApp()
    myapp.show()
    sys.exit(app.exec_())


.ui文件转化成.py文件
import os
import os.path


def listUiFile():
    list = []
    files = os.listdir("./")
    for filename in files:
        if os.path.splitext(filename)[1] == '.ui':
            list.append(filename)
    return list


def transPyFile(filename):
    return os.path.splitext(filename)[0] + '.py'


def runMain():
    list = listUiFile()
    for uifile in list:
        pyfile = transPyFile(uifile)
        cmd = 'pyuic5 -o {pyfile} {uifile}'.format(pyfile=pyfile, uifile=uifile)
        os.system(cmd)


if __name__ == "__main__":
    runMain()

把这段代码放到和ui文件同级目录下,然后直接运行即可把.ui文件自动编译成py文件

  • 文件结构如下
    在这里插入图片描述

对象操作

QMessageBox操作
  • 用于风险操作的二次确认
questionResult = QMessageBox.question(None, "询问框title", "是否修改XXXXX修改后不可还原!", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if questionResult == QMessageBox.No:
	return None  # 这里可以改成任何取消操作的代码逻辑,在函数中则用return None

在这里插入图片描述

  • 其他常规提示
QMessageBox.information(self, '信息框title', '这是信息内容')
QMessageBox.warning(self, '警告框title', '这是警告内容')
QMessageBox.critical(self, '错误框title', '这是错误内容')

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

JSON格式渲染到tableWidget
import sys

from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem


def fill_table(tableWidget, jsonData):
    # 清空表格
    tableWidget.clearContents()
    tableWidget.setRowCount(0)
    # 设置表头
    header = jsonData[0].keys()
    tableWidget.setColumnCount(len(header))
    tableWidget.setHorizontalHeaderLabels(header)

    # 遍历数据并将其添加到表中
    for row_index, row_data in enumerate(jsonData):
        tableWidget.insertRow(row_index)
        for col_index, col_name in enumerate(header):
            item = QTableWidgetItem(str(row_data[col_name]))
            tableWidget.setItem(row_index, col_index, item)


if __name__ == "__main__":
    json_data = [
        {"BV": "BV1", "播放量": 1000, "点赞": 500, "评论": 200, "转发": 100, "投币": 50, "收藏": 30},
        {"BV": "BV2", "播放量": 1500, "点赞": 700, "评论": 300, "转发": 150, "投币": 70, "收藏": 40},
        {"BV": "BV3", "播放量": 2000, "点赞": 900, "评论": 400, "转发": 200, "投币": 90, "收藏": 50}
    ]

    app = QApplication(sys.argv)
    tableWidget = QTableWidget()
    tableWidget.show()

    fill_table(tableWidget, json_data)

    sys.exit(app.exec_())

注意使用的时候JSON数据格式必须统一,否则可能产生报错

  • 效果
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Scala环境的搭建

要搭建Scala,我们必须先下载java,由于我的电脑已经搭建好了环境,因此我这里用截图来教大家搭建环境。 可以从网上搜索安装包对其进行安装 IntelliJ IDEA – 领先的 Java 和 Kotlin IDE 不建议下载最新版的,大家下载的版本可以下…

CyberDAO引领Web3新时代,共创去中心化未来

Web3的新时代 Web3是互联网的下一代版本,基于区块链技术,实现了去中心化、透明和安全的网络体验。与微信、淘宝等传统中心化平台不同,Web3赋予用户更多的控制权和数据所有权。用户行为数据将由用户自己拥有并分布式管理,不再集中…

PySpark特征工程(III)--特征选择

有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功的关键。 特征工程是数据分析…

LeetCode刷题之最大子数组

今天打算多做一题。 1、题目描述 2、逻辑分析 哈哈,这题我前两天在小红书刷到了,博主答不上来,一样的是,我也不知道怎么做。当时只看到评论说什么dp解法,看看题解怎么说。现在才反应过来dp dynamic programming &am…

【C语言】详解函数(庖丁解牛版)

文章目录 1. 前言2. 函数的概念3.库函数3.1 标准库和头文件3.2 库函数的使用3.2.1 头文件的包含3.2.2 实践 4. 自定义函数4.1 自定义函数的语法形式4.2 函数的举例 5. 形参和实参5.1 实参5.2 形参5.3 实参和形参的关系 6. return 语句6. 总结 1. 前言 一讲到函数这块&#xff…

数据库(19)——字符串函数

函数是指一段可以直接被另一段程序调用的程序代码。 常用的函数 函数功能CONCAT(S1,S2...Sn)字符串拼接LOWER(str)将字符串全部转换为小写UPPER(str)将字符串全部转换为大写LPAD(str,n,pad) 用字符串pad对str的左边进行填充RPAD(str,n,pad)用字符串…

10倍速提升音乐制作,FL Studio21.2.9中文版揭秘!

FL Studio21中文版是数字音频工作站软件领域的一颗璀璨明星,它以强大的功能和直观的操作界面,赢得了音乐制作人和爱好者的广泛青睐。无论是专业音乐人还是初学者,都能通过这款软件探索和实现他们对音乐的创作和想象。本文将详细介绍FL Studio…

Maven实战: 从工程创建自定义archetype

在上一节中(创建自定义archetype)我们手动创建了一个项目模板,经过5步能创建出一个项目模板,如果我有一个现成的项目,想用这个项目作为模板来生成其他项目呢?Maven提供了基于项目生成archetype模板的能力,我们分3步来讲…

公差和配合

配合的选择: 配合特性以及基本偏差的应用: 常用优先配合特性及选用举例 为什么一般情况下选用基孔制而不用基轴制: 优先采用基孔制的原因主要包括工艺性、经济性和标准化: 工艺性。加工孔比加工轴更难,因为孔…

函数计数和跟踪 --- console的count和trace方法

新学到一个小方法,分享一下哦。 使用 console 对象的 trace ⽅法在控制台上输出当前的调用栈,可以追踪⼀个函数的执⾏过程。 当我们想要了解一个函数是如何被其他函数调用的,或者想要查看调用栈中的其他信息时,这个方法非常有用…

韩文图片文字识别,这几款软件轻松驾驭韩语文本

在当今信息爆炸的时代,跨语言交流已成为日常生活和工作中的常态。对于需要处理韩文文本的用户来说,韩文图片文字识别技术无疑是一大福音。今天,就为大家介绍几款优秀的韩文图片文字识别软件,让你轻松驾驭韩语文本,提升…

性能工具之 JMeter 常用组件介绍(二)

文章目录 一、Thread Group二、断言组件1、Response Assertion:响应断言2、Response Assertion:响应断言3、Duration Assertion:响应时间断言4.、JSON Assertion:json断言 一、Thread Group 线程组也叫用户组,是性能测…

【linux根分区扩容】

前言: 今天在安装软件的时候发现我的linux的根分区空间不足了,在网上搜索哈资料解决了。 解决根分区空间不足的问题方法: 第一:用lsblk命令查看 发现还有一些空间不在了。 第二:安装扩容工具: yum inst…

react快速开始(四)-之Vite 还是 (Create React App) CRA? 用Vite创建项目

文章目录 react快速开始(四)-之Vite 还是 (Create React App) CRA? 用Vite创建项目背景Vite 和 (Create React App) CRAVite?Vite 是否支持 TypeScript? 用Vite创建react项目参考 react快速开始(四)-之Vite 还是 (Create React App) CRA? 用Vite创建项…

SpringBoot3依赖管理,自动配置

文章目录 1. 项目新建2. 相关pom依赖3. 依赖管理机制导入 starter 所有相关依赖都会导入进来为什么版本号都不用写?如何自定义版本号第三方的jar包 4. 自动配置机制5. 核心注解 1. 项目新建 直接建Maven项目通过官方提供的Spring Initializr项目创建 2. 相关pom依…

什么是电风扇行情?

“电风扇行情” 是一个金融术语,用于描述证券市场中价格上下波动频繁、幅度较大,但总体趋势不明显的市场状况。   其名称来源于电风扇的扇叶在旋转时,风向不断变化的特征,形象地比喻了市场价格频繁变动但没有明确方向的情景。 …

桥田磁力换模系统|实现模具的自动化快速切换

作为橡塑材料包装及模具专业展会, 历时3天的广州橡塑展在广交会展中心圆满落幕。本次展会桥田智能携桥田快换盘、桥田工业连接器、桥田抓取系统以及新产品桥田MMC磁力换模系统四大产品系列亮相。同时利用动态演示、静态展示以及协作机器人互动等方式,多角度展示了桥…

两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析-文献精读20

Characterization of two O-methyltransferases involved in the biosynthesis of O-methylated catechins in tea plant 两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析 茶树三维基因组-文献精读19 比较转录组分析揭示了116种山茶属(Camellia)植物的深层系统…

大模型Chain-of-Thought(CoT)与Agent基础知识与介绍

大模型Chain-of-Thought(CoT)与Agent基础知识与介绍 参考文献:Exploring Equation as a Better Intermediate Meaning Representation for Numerical Reasoning of Large Language Models 仓库:https://github.com/zirui-HIT/Br…

基础篇04——多表查询

多表关系 一对多 多对多 多对多是通过中间表实现的 -- 创建学生表 create table student (id int auto_increment primary key comment ID,name varchar(10) comment 姓名,no varchar(3) comment 学号 ) comment 学生表;insert into student values (null, 黛绮丝, 001),(…