一个用python PyQT写的背单词小程序
主要用到了QGridLayout, QTableWidget
import sys
import os
import pandas as pd
from PyQt5.QtWidgets import *class DataFrameExample(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('DataFrame Example')self.setGeometry(100, 100, 800, 400)self.layout = QGridLayout() # 使用网格布局# 左侧文本框self.text_edit = QTextEdit()self.layout.addWidget(self.text_edit, 0, 0, 2, 1) # 放大文本框所占的行数# 中间按钮self.button_layout = QVBoxLayout() # 按钮布局self.show_button = QPushButton('Show Next Row')self.show_button.clicked.connect(self.showNextRow)self.button_layout.addWidget(self.show_button)self.explain_button = QPushButton('Show Explain')self.explain_button.clicked.connect(self.showExplain)self.button_layout.addWidget(self.explain_button)self.move_to_table_button = QPushButton('Move to Table')self.move_to_table_button.clicked.connect(self.moveToTable)self.button_layout.addWidget(self.move_to_table_button)self.save_table_button = QPushButton('Save Unknown Word')self.save_table_button.clicked.connect(self.save_unknown_words)self.button_layout.addWidget(self.save_table_button)self.back_button = QPushButton('Back to Last Word')self.back_button.clicked.connect(self.back2LastRow)self.button_layout.addWidget(self.back_button)# 添加一个空白的占位符,使按钮布局竖着排列self.button_layout.addStretch()self.layout.addLayout(self.button_layout, 0, 1, 2, 1) # 放大按钮布局所占的行数# 右侧表格self.table = QTableWidget()self.table.setColumnCount(1)self.table.setHorizontalHeaderLabels(['Data'])self.layout.addWidget(self.table, 0, 2, 2, 1) # 放大表格所占的行数# self.data = pd.DataFrame({'A': range(1, 101), 'B': range(101, 201), 'C': range(201, 301), 'D': range(301, 401)})self.data = self.load_data()self.row_index = -1self.setLayout(self.layout)self.show()def showNextRow(self):self.row_index += 1if self.row_index < len(self.data):self.text_edit.clear()row_data = self.data.iloc[self.row_index, 2]self.text_edit.setPlainText(row_data)print("word {} : {}".format(self.row_index, row_data))else:print("learn completed!")def back2LastRow(self):self.row_index -= 1if self.row_index < len(self.data):self.text_edit.clear()row_data = self.data.iloc[self.row_index, 2]self.text_edit.setPlainText(row_data)print("word {} : {}".format(self.row_index, row_data))else:print("error")def showExplain(self):row_data = self.data.iloc[self.row_index].to_string()self.text_edit.setPlainText(row_data)def moveToTable(self):current_text = self.data.iloc[self.row_index, 2]if current_text:rowPosition = self.table.rowCount()self.table.insertRow(rowPosition)newItem = QTableWidgetItem(current_text)self.table.setItem(rowPosition, 0, newItem)tmp = pd.DataFrame(self.data.iloc[self.row_index, :]).Tword = tmp.iloc[0, 2]if word not in self.df_learn.values:self.df_learn = pd.concat([self.df_learn, tmp], ignore_index=True)print("{} 加入生词表\n".format(word))def load_data(self):df = pd.read_excel('/Users/username/Desktop/N1Words.xlsx', sheet_name=0)# random_sample = df.sample(n=10, random_state=1) # 设置随机种子,使结果可重复random_sample = df.sample(n=150)folder_path = "/Users/username/Desktop" # 将此路径替换为你要检查的文件夹的实际路径# 指定要检查的文件名file_name = "unknown_word.xlsx" # 将此文件名替换为你要检查的文件名# 使用 os.path.join() 将文件夹路径和文件名拼接成完整的文件路径self.file_path = os.path.join(folder_path, file_name)# 使用 os.path.exists() 来检查文件是否存在if os.path.exists(self.file_path):print(f"文件 '{file_name}' 存在于文件夹 '{folder_path}' 中.")self.df_learn = pd.read_excel(self.file_path, sheet_name=0)else:print(f"文件 '{file_name}' 不存在于文件夹 '{folder_path}' 中.")self.df_learn = pd.DataFrame(columns=df.columns)return random_sampledef save_unknown_words(self):self.df_learn.to_excel(self.file_path, index=False)print("file saved!")if __name__ == '__main__':app = QApplication(sys.argv)ex = DataFrameExample()sys.exit(app.exec_())
相关文章:
一个用python PyQT写的背单词小程序
主要用到了QGridLayout, QTableWidget import sys import os import pandas as pd from PyQt5.QtWidgets import *class DataFrameExample(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle(DataFrame Example)self.setGeom…...
AutoSAR配置与实践(深入篇)10.1 UDS刷写诊断服务解析(34/36/37服务)
AutoSAR配置与实践(深入篇)10.1 Boot刷写诊断服务解析(34/36/37服务) UDS刷写服务一、0x34服务1.1 0x34服务请求格式1.2 0x34服务响应格式1.3 举例说明二、TransferData (0x36) service2.1 0x36服务请求格式2.2 0x36服务响应格式2.3 举例说明三、RequestTransferExit (0x37…...
【机器学习】六、概率图模型
今天我们对概率图模型(Probabilistic Graphical Model,PGM)做一个总结。 模型表示 概率图模型,是指一种用图结构来描述多元随机变量之间条件独立关系的概率模型。 它提出的背景是为了更好研究复杂联合概率分布的数据特征&#x…...
机器视觉软件破解的背后是道高一尺,魔高一丈
讲个故事,小明从某购物平台花2000元买了一个C#机器视觉架构,压缩包带加密,卖家让小明先确认收货后给密码。 小明花了3元从另外一家卖家破解开压缩包密码,然后迅速从第一家卖家退货。小明成功省了1997元。 “道高一尺,…...
【I/O流之旅】File类-零基础入门指南
🎊专栏【Java】 🌺每日一句:看不清楚未来时,就比别人坚持久一点 ⭐欢迎并且感谢大家指出我的问题 目录 1.File概述 2.File构造方法 (1).根据文件路径创建文件对象 (2).根据父路径名字符串和子路径名字符串创建对象 (3).根据父路径对应文件对象和子路…...
ArrayList和LinkedList的区别有哪些?
ArrayList 和 LinkedList 是 Java 中常用的两种集合类,它们之间有一些重要的区别,主要涉及到其内部实现和性能特点: 内部实现: ArrayList 是基于动态数组实现的。它使用一个数组来存储元素,当数组已满并需要添加新元素…...
Pyhotn: Mac安装selenium没有chromedriver-114以上及chromedriver无法挪到/usr/bin目录下的问题
1.0 安装selenium 终端输入: pip install selenium 查看版本: pip show selenium2.0 安装chromedriver 查看chrome版本 网上大多数是,基本到114就停了。 https://registry.npmmirror.com/binary.html?pathchromedriver/ 各种搜索&#…...
Java TCP服务端多线程接收RFID网络读卡器上传数据
本示例使用设备介绍:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; impor…...
SpringCloud——服务网关——GateWay
1.GateWay是什么? gateway也叫服务网关,SpringCloud GateWay使用的是Webflux中的reactor-netty响应式编程组件,底层使用了Netty通讯框架。 gateway的功能有反向代理、鉴权、流量控制、熔断、日志监控...... 2.为什么不使用Zuul?…...
Linux程序的地址空间
Linux程序的地址空间 📟作者主页:慢热的陕西人 🌴专栏链接:Linux 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 本博客主要内容深刻理解了什么程序或者进程的地址…...
Docker安装Minio(稳定版)
1、安装 docker pull minio/minio:RELEASE.2021-06-17T00-10-46Z docker run -p 9000:9000 minio/minio:RELEASE.2021-06-17T00-10-46Z server /data 2、访问测试 3、MinIO自定义Access和Secret密钥 要覆盖MinIO的自动生成的密钥,您可以将Access和Secret密钥设为…...
大数据毕业设计选题推荐-超级英雄运营数据监控平台-Hadoop-Spark-Hive
✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...
视频转码教程:轻松制作GIF动态图,一键高效剪辑操作
随着社交媒体的兴起,GIF动态图已经成为了人们表达情感、分享精彩瞬间的重要方式。而将视频转化为GIF动态图,不仅可以方便地在社交媒体上分享,还可以延长视频的播放时长,吸引更多的观众。本篇文章将为大家介绍如何将视频轻松转化为…...
Seata分布式事务实现原理
Seata可以解决分布式事务问题,利用GlobalTransacational(name "fsp-create-order",rollbackFor Exception.class)注解就可以实现全局的事务管理,但是我们需要明白原理的实现。 我们举例创建订单——>调减库存——>调扣余额——>改订…...
Rasa NLU中的组件
Rasa NLU部分主要是解决NER(序列建模)和意图识别(分类建模)这2个任务。Rasa NLP是一个基于DAG的通用框架,图中的顶点即组件。组件特征包括有顺序关系、可相互替换、可互斥和可同时使用。有向无环图(DAG&…...
redis笔记 三 redis持久化
文章目录 Redis持久化RDB持久化执行时机RDB原理小结 AOF持久化AOF原理AOF配置AOF文件重写 RDB与AOF对比 Redis持久化 redis持久化是为了解决redis宕机时丢失数据的问题,Redis有两种持久化方案: RDB持久化AOF持久化 RDB持久化 RDB全称Redis Database …...
k8s-----数据存储
目录 一、数据存储的概念 二、基本存储 1、EmptyDir存储卷 2、hostPath存储卷 3、nfs共享存储卷 三、高级存储 1、PV(持久化卷) 2、PVC(持久化卷声明) 3、静态PV实验 4、动态PV实验 4.1 在stor01节点上安装nfs…...
macOS电池续航工具:Endurance中文
Endurance for Mac是一款强大而实用的电池管理和优化软件,专为MacBook设计。通过智能调整系统设置和管理后台应用,它能有效延长电池续航时间,提升工作和娱乐效率,成为你在各种场合下的得力助手。 Endurance for Mac软件的功能特色…...
栈(定义,基本操作,顺序存储,链式存储)
目录 1.栈的定义1.重要术语2.特点 2.栈的基本操作3.栈的顺序存储1.顺序栈的定义2.基本操作1.初始化2.进栈3.出栈4.读栈顶 3.共享栈 4.栈的链式存储 1.栈的定义 栈( Stack)是只允许在一端进行插入或删除操作的线性表。 一种受限的线性表,只能在栈顶进行插…...
在HTML单页面中,使用Bootstrap框架的多选框如何提交数据
1.引入Bootstrap CSS和JavaScript文件:确保在HTML页面的标签内引入Bootstrap的CSS和JavaScript文件。可以使用CDN链接或者下载本地文件。 <link rel"stylesheet" href"https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css&q…...
OpenClaw技能市场巡礼:Phi-3-mini-128k-instruct适配的十大实用工具
OpenClaw技能市场巡礼:Phi-3-mini-128k-instruct适配的十大实用工具 1. 为什么需要技能市场? 当我第一次接触OpenClaw时,最让我惊喜的不是它能够操控鼠标键盘的能力,而是它背后那个充满可能性的技能市场。作为一个长期与命令行打…...
三菱FX5U ModbusTCP从站配置避坑指南:从IP冲突到通讯成功的完整流程
三菱FX5U ModbusTCP从站配置避坑指南:从IP冲突到通讯成功的完整流程 工业自动化领域中,ModbusTCP通讯协议因其简单高效的特点,成为PLC与上位机交互的常用方式。三菱FX5U系列PLC作为一款高性价比的可编程控制器,在中小型自动化项目…...
2026届学术党必备的六大AI学术神器推荐榜单
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 基于自然语言处理以及深度学习算法的AI论文查重技术,经过对文本的语义结构、句式…...
Windows系统盘空间告急?Driver Store Explorer帮你轻松清理冗余驱动,快速释放10GB+
Windows系统盘空间告急?Driver Store Explorer帮你轻松清理冗余驱动,快速释放10GB 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾困惑于Windows系统盘空…...
保姆级教程:在Linux上用Flume 1.7.0 + Spark 2.4.7搭建实时日志流处理管道
企业级实时日志处理实战:Flume 1.7.0与Spark 2.4.7深度整合指南 在当今数据驱动的商业环境中,实时日志处理能力已成为企业技术栈的核心竞争力。想象一下电商大促期间每秒数万条的用户行为日志,或是金融交易系统中毫秒级延迟的风控信号处理——…...
QKeyMapper终极指南:如何在不重启Windows的情况下彻底改变你的按键习惯
QKeyMapper终极指南:如何在不重启Windows的情况下彻底改变你的按键习惯 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到…...
修改 WindTerm 快捷键配置为Ctrl+V / Ctrl+C
为了让 复制 / 粘贴 的快捷键更符合 Windows 的使用习惯,可以按下面的方法修改 WindTerm 的配置文件。 一、找到配置文件 先进入 WindTerm 的安装目录,然后依次打开: global 文件夹 在该文件夹中找到以下配置文件之一: wind.keyma…...
Spring Data事务管理与多租户架构:企业级数据隔离终极指南
Spring Data事务管理与多租户架构:企业级数据隔离终极指南 【免费下载链接】spring-data-examples Spring Data Example Projects 项目地址: https://gitcode.com/gh_mirrors/sp/spring-data-examples Spring Data事务管理与多租户架构是企业级应用开发中的两…...
Jedi-vim与其他Vim插件的终极兼容性指南:避免冲突的10个技巧
Jedi-vim与其他Vim插件的终极兼容性指南:避免冲突的10个技巧 【免费下载链接】jedi-vim Using the jedi autocompletion library for VIM. 项目地址: https://gitcode.com/gh_mirrors/je/jedi-vim Jedi-vim是Vim编辑器中最强大的Python自动补全插件之一&…...
终极指南:如何深度调试AMD Ryzen处理器实现性能最大化
终极指南:如何深度调试AMD Ryzen处理器实现性能最大化 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…...
