一个用python PyQT写的背单词小程序

这篇具有很好参考价值的文章主要介绍了一个用python PyQT写的背单词小程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

主要用到了QGridLayout, QTableWidget文章来源地址https://www.toymoban.com/news/detail-759161.html

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 = -1

		self.setLayout(self.layout)
		self.show()

	def showNextRow(self):
		self.row_index += 1
		if 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 -= 1
		if 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, :]).T
		word = 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_sample

	def 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写的背单词小程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 制作一个串口助手 | python + pyqt5

    目录 一、背景 1.1、开发流程图 二、前提 2.1、关于环境 2.2、关于源码 三、步骤 3.1、使用pyqt创建一个.ui界面并生成.py文件 3.2、创建两个.py文件,一个用来继承ui界面生成的.py类,一个用来实现各种功能 3.3、各个功能代码 3.3.1、打开串口 3.3.2、关闭串口 3.3.3、获取串口号 3.

    2024年02月05日
    浏览(86)
  • 【Python】pyqt5入门教程之第一个UI界面

    1.pyqt5工具安装 (1)使用pip工具安装PyQt5工具: (2)安装Qt Designer图形界面开发工具: 安装完成后所在路径 (3)安装QtDesigner 安装完成后所在路径 designer.exe路径 启动QtDesigner 2.第一个QT窗口程序 Pycharm配置 找到py文件,右键External Tool — QTDesigner—就可以启动 QTDesigner .ui文件转换

    2024年02月15日
    浏览(47)
  • pyqt5+python子域名扫描程序

    其中.txt文件,主要运用python爬虫进行探测,另外用headers bing.com的方式在2023年6月开始不能用了,我也不知道为什么

    2024年01月20日
    浏览(41)
  • 最新版本VSCode配置Python、PyQt5、QtDesigner环境并创建一个ui界面测试

    参考链接:最新版本VSCode配置Python、PyQt5、QtDesigner环境并创建一个ui界面测试 一、安装Python3 PyQt5所支持的python版本是从3.5开始的,因此安装的Python3版本必须大于3.5。 我安装的位置是C:PythonPython38。 参见真小白入门Pyhton的安装 二、安装PyQt5以及PyQt5-tools(这里面就有designer了

    2024年02月08日
    浏览(47)
  • PyQt应用程序中的多线程:使用Qt还是Python线程?

    多线程模块能够更加高效得完成任务,但是在PyQt 应用程序中实现多线程可以使用 Qt 的线程模块(QThread)或者 Python 的 threading 模块。两者各有优劣,具体选择取决于项目需求和个人偏好。下面我们将以案例来说明两种模块具体得优缺点。 1、问题背景 在 PyQt 应用程序中,编

    2024年02月22日
    浏览(55)
  • 【PyQt5】构建强大的Python图形用户界面应用程序 -- 入门指南

      作者主页: 爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主 爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域. https://blog.csdn.net/Code_and516?type=blog 个人简介:打工人。 持续分

    2024年02月15日
    浏览(54)
  • python3GUI--仿做一个网易云音乐(第三弹v2.0)By:PyQt5(附下载地址)

    传送门: python3GUI–仿做一个网易云音乐By:PyQt5(附下载地址) python3GUI–仿做一个网易云音乐(第二弹v1.5)By:PyQt5(附下载地址) 本篇为模仿网易云音乐2.0篇,是本系列最后一篇,本篇继续在v1.5基础上进行改进,尽最大努力模仿网易云音乐播放器UI,本篇将全方面介绍咱们的“

    2024年02月15日
    浏览(80)
  • Arduino开发ESP32-CAM模块 & 使用Python-PyQt5编写图传.exe独立程序

    1.1 驱动ESP32-CAM 笔者使用Arduino编写ESP32-CAM的驱动程序,版本为1.8.19。在较新的版本中,Arduino的UI风格发生了变化,不过下面配置的功能基本保留,读者注意辨别其中的异同之处。 1.1.1 在Arduino中配置开发环境 1.首先,我们需要在Arduino中配置ESP32开发板的开发环境。打开Arduino,

    2024年02月04日
    浏览(50)
  • PyQt5制作一个简单的登录界面

    最近在学习GUI设计,分享做的一些小项目。 这篇文我们讲一下如何制作一个简单的登录界面。 如下: 1、QtDesigner里绘制UI界面并设置属性 布局根据个人喜好,部件颜色、字体、背景属性在styleSheet里设置。 2、材料转换(将.ui文件转.py,.qrc文件转_rc.py) 通过PyUIC和PyRcc即可完成。

    2024年02月03日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包