安装Pyqt5

①pip install PyQt5

②需要安装Qt工具,也选择pip安装:

pip install PyQt5-tools

主程序

import sys

from PyQt5 import QtWidgets

from PyQt5.QtWidgets import QApplication, QMainWindow

import recit

if __name__ == '__main__':

app = QtWidgets.QApplication(sys.argv)

MainWindow = QMainWindow()

ui = recit.Ui_heheda()

ui.setupUi(MainWindow)

MainWindow.show()

sys.exit(app.exec_())

recit.py文件

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'

#

# Created by: PyQt5 UI code generator 5.14.1

#

# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

from PyQt5.QtCore import QCoreApplication

from PyQt5.Qt import *

########背景设置##########

# encoding:utf-8

import sys

from PyQt5 import QtWidgets, QtCore, QtGui

from PyQt5.QtGui import *

from PyQt5.QtWidgets import *

# 背景设置部分

from PyQt5.QtGui import QPainter, QPixmap

from PyQt5.QtWidgets import QLabel, QPushButton, QFileDialog

class Ui_heheda(QWidget):

def __init__(self):

super(Ui_heheda, self).__init__()

self.bool = False

self.line_list = []

self.w = ''

self.Chinese = ''

self.word = ''

self.error_1 = []

self.error_2 = []

self.n = 0

def setupUi(self, heheda):

heheda.setObjectName("heheda")

# heheda.resize(821, 600)

heheda.resize(800, 600)

image = QtGui.QPixmap()

image.load(r"pig.png")

palette1 = QtGui.QPalette()

palette1.setBrush(heheda.backgroundRole(), QtGui.QBrush(image)) # 背景图片

heheda.setPalette(palette1)

heheda.setAutoFillBackground(True)

# self.grabKeyboard()

self.textEdit = QtWidgets.QTextEdit(heheda)

self.textEdit.setGeometry(QtCore.QRect(50, 90, 711, 111))

self.textEdit.setObjectName("textEdit")

self.textEdit.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px;")

self.textEdit.setText(self.Chinese)

self.textEdit_2 = QtWidgets.QTextEdit(heheda)

self.textEdit_2.setGeometry(QtCore.QRect(50, 210, 191, 111))

self.textEdit_2.setObjectName("textEdit_2")

self.textEdit_2.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

# self.textEdit_2.setText(word)

# self.textEdit_2.toPlainText()

self.textEdit_4 = QtWidgets.QTextEdit(heheda)

self.textEdit_4.setGeometry(QtCore.QRect(310, 210, 451, 111))

self.textEdit_4.setObjectName("textEdit_4")

self.textEdit_4.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px;")

self.textEdit_3 = QtWidgets.QTextEdit(heheda)

self.textEdit_3.setGeometry(QtCore.QRect(300, 30, 211, 41))

self.textEdit_3.setObjectName("textEdit_3")

self.textEdit_3.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

self.pushButton = QtWidgets.QPushButton(heheda)

self.pushButton.setGeometry(QtCore.QRect(50, 350, 191, 61))

self.pushButton.setObjectName("pushButton")

self.pushButton.clicked.connect(self.click_success)

self.pushButton.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

self.pushButton_2 = QtWidgets.QPushButton(heheda)

self.pushButton_2.setGeometry(QtCore.QRect(310, 350, 191, 61))

self.pushButton_2.clicked.connect(self.click_continue)

self.pushButton_2.setObjectName("pushButton_2")

self.pushButton_2.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

self.pushButton_3 = QtWidgets.QPushButton(heheda)

self.pushButton_3.setGeometry(QtCore.QRect(570, 350, 191, 61))

self.pushButton_3.setObjectName("pushButton_3")

self.pushButton_3.clicked.connect(self.click_exit)

self.pushButton_3.clicked.connect(QCoreApplication.instance().quit)

self.pushButton_3.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

self.pushButton_4 = QtWidgets.QPushButton(heheda)

# self.pushButton_4.setGeometry(QtCore.QRect(90, 420, 100, 61))

self.pushButton_4.setGeometry(QtCore.QRect(50, 420, 191, 61))

self.pushButton_4.setObjectName("pushButton_4")

self.pushButton_4.clicked.connect(self.click_filew)

self.pushButton_4.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

self.pushButton_5 = QtWidgets.QPushButton(heheda)

# self.pushButton_5.setGeometry(QtCore.QRect(615, 420, 100, 61))

self.pushButton_5.setGeometry(QtCore.QRect(570, 420, 191, 61))

self.pushButton_5.setObjectName("导入数据")

self.pushButton_5.clicked.connect(self.click_data)

self.pushButton_5.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

self.pushButton_6 = QtWidgets.QPushButton(heheda)

self.pushButton_6.setGeometry(QtCore.QRect(310, 420, 191, 61))

self.pushButton_6.setObjectName("pushButton_6")

self.pushButton_6.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

self.pushButton_6.clicked.connect(self.click_answer)

self.pushButton_7 = QtWidgets.QPushButton(heheda)

self.pushButton_7.setGeometry(QtCore.QRect(50, 490, 191, 61))

self.pushButton_7.setObjectName("pushButton_7")

self.pushButton_7.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

self.pushButton_7.clicked.connect(self.click_error_txt)

self.pushButton_8 = QtWidgets.QPushButton(heheda)

self.pushButton_8.setGeometry(QtCore.QRect(310, 490, 191, 61))

self.pushButton_8.setObjectName("pushButton_8")

self.pushButton_8.setStyleSheet("background-color: rgb(255, 255, 255, 60);font-size:30px;border-radius:10px")

self.pushButton_8.clicked.connect(self.click_reback)

self.retranslateUi(heheda)

QtCore.QMetaObject.connectSlotsByName(heheda)

def retranslateUi(self, heheda):

_translate = QtCore.QCoreApplication.translate

heheda.setWindowTitle(_translate("heheda", "呵呵哒背单词神器!"))

self.textEdit_3.setHtml(_translate("heheda",

""-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"

"

\n"

"

呵呵哒背单词!

"))

self.pushButton.setText(_translate("heheda", "确定输入"))

self.pushButton_2.setText(_translate("heheda", "继续练习"))

self.pushButton_3.setText(_translate("heheda", "退出练习"))

self.pushButton_4.setText(_translate("heheda", "导出数据"))

self.pushButton_5.setText(_translate("heheda", "导入数据"))

self.pushButton_6.setText(_translate("heheda", "查看答案"))

self.pushButton_7.setText(_translate("heheda", "温习错背"))

self.pushButton_8.setText(_translate("heheda", "闯关数据"))

def click_success(self):

import multiprocessing

print("啊哈哈哈我终于成功了!")

print('=--------------------------------=',self.word)

I_input_text = self.textEdit_2.toPlainText()

print('=--------------------------------=', I_input_text)

if I_input_text.strip() == self.word.strip():

# self.bool=True

self.textEdit_4.setText("恭喜您回答正确!!!")

self.textEdit_4.append(I_input_text)

from PyQt5.QtWidgets import QApplication

QApplication.processEvents()

self.PaChong()

else:

self.textEdit_4.setText("很遗憾您答错了!正确答案是:")

self.textEdit_4.append(self.word)

self.error_1.append(self.word)

self.error_2.append(self.Chinese)

# self.my_thread.connect(self.click_display)

# self.my_thread.word.connect(self.soud)

def PaChong(self):

import requests

import os

path = self.word + '.mp3'

if not os.path.exists(path):

h = requests.get(

'https://sp0.baidu.com/-rM1hT4a2gU2pMbgoY3K/gettts?lan=en&text=' + self.word + '&spd=2&source=alading').content

with open(path, 'wb') as f:

f.write(h)

from playsound import playsound

playsound(path)

def click_continue(self):

print("继续!")

import random

if len(self.line_list)==0:

print("啥都没有")

else:

lst = []

self.n=self.n+1

if self.n==1:

lst = self.line_list[0:50]

random.shuffle(lst)

if self.n==2:

lst = self.line_list[50:100]

random.shuffle(lst)

if self.n==3:

lst = self.line_list[100:150]

# print(lst)

random.shuffle(lst)

if self.n==4:

lst = self.line_list[150:-1]

random.shuffle(lst)

self.n=0

lst = list(lst)

if len(lst)==0:

lst = self.line_list[0:50]

lst = [i for i in lst if i != '\n']

# print(lst)

self.word_list = random.sample(lst, 1)

print(self.word_list)

self.w = self.word_list[0]

# print(self.w)

# print('============================', self.w.split(':')[:-2])

self.word = self.w.split(':')[0]

# print('============================', self.w.split(':')[0])

print('============================',self.w.split(':')[1])

self.Chinese = self.w.split(':')[1].strip('\n')

self.textEdit.setText(self.Chinese)

self.textEdit_2.setText(self.word)

str = ''

self.textEdit_2.setText(str)

self.textEdit_4.setText(str)

def click_exit(self):

print("退出!")

def click_data(self):

my_file_path = QFileDialog.getOpenFileName(self, "打开文件", "/", "*.txt")

print(my_file_path)

file_object = open(my_file_path[0], 'r', encoding='UTF-8')

self.textEdit_2.setText('')

self.textEdit_4.setText('')

self.line_list = []

try:

for line in file_object:

self.line_list.append(line)

finally:

file_object.close()

print(self.line_list)

import random

self.word_list = random.sample(self.line_list, 1)

self.line_list = self.line_list

self.w = self.word_list[0]

self.word = self.w.split(':')[0]

self.Chinese = self.w.split(':')[1].strip('\n')

self.textEdit.setText(self.Chinese)

print(self.word)

print(self.Chinese)

def click_filew(self):

f = open("error.txt", "a+")

for i in range(len(self.error_1)):

f.write(self.error_1[i] +':'+ self.error_2[i] )

f.write('\n')

self.show_message()

self.error_1 = []

self.error_2 = []

f.close()

def show_message(self):

QMessageBox.information(self, "标题", "成功导出背不熟单词",

QMessageBox.Yes)

def click_answer(self):

self.textEdit_4.setText(self.word)

self.error_1.append(self.word)

self.error_2.append(self.Chinese)

def keyPressEvent(self, QKeyEvent): # 键盘某个键被按下时调用

# 参数1 控件

from PyQt5.QtCore import Qt

if QKeyEvent.modifiers()==Qt.ControlModifier and QKeyEvent.key()== Qt.Key_A: # 判断是否按下了A键

# key() 是普通键

print('按下了A键')

self.click_answer()

if QKeyEvent.modifiers()==Qt.ControlModifier and QKeyEvent.key()== Qt.Key_Z: # 判断是否按下了Z键

# key() 是普通键

print('按下了Z键')

self.click_success()

if QKeyEvent.modifiers()==Qt.ControlModifier and QKeyEvent.key()== Qt.Key_S: # 判断是否按下了S键

# key() 是普通键

print('按下了S键')

self.click_continue()

def click_error_txt(self):

import random

self.textEdit_2.setText('')

self.textEdit_4.setText('')

# file_object = open('error.txt', 'r', encoding='UTF-8' encoding="ISO-8859-1")

file_object = open('error.txt', 'r', encoding="utf-8")

self.line_list = []

try:

for line in file_object:

self.line_list.append(line)

finally:

file_object.close()

self.line_list = set(self.line_list)

self.line_list = list(self.line_list)

print("不重复",self.line_list)

try:

random.shuffle(self.line_list)

word_list = random.sample(self.line_list, 1)

self.w = word_list[0]

self.word = self.w.split(':')[0].strip('\n')

self.Chinese = self.w.split(':')[1].strip('\n')

self.textEdit.setText(self.Chinese)

except:

print("can't")

QMessageBox.information(self, "data", "没有错题词汇",

QMessageBox.Yes)

def click_reback(self):

# ###################################################

self.textEdit_2.setText('')

self.textEdit_4.setText('')

import random

file_object = open('test.txt', 'r', encoding='UTF-8')

self.line_list = []

try:

for line in file_object:

self.line_list.append(line)

finally:

file_object.close()

random.shuffle(self.line_list)

word_list = random.sample(self.line_list, 1)

self.w = word_list[0]

self.word = self.w.split(':')[0]

self.Chinese = self.w.split(':')[1].strip('\n')

self.textEdit.setText(self.Chinese)

# ###################################################

txt文本格式:

abandon:放弃 (棒)

aboard:在船,上船、

abroad:到国外,在国外

above:在...之上,高于

absent:缺席,不在

absolute:绝对的,完全的

absorb:吸收 吸引...的注意,使全神贯注

abstract:抽象的 摘要 梗概

abundant:丰富的,充裕的

accent:口音

access:接近,进入,通道

accommodation:住宿

accompany:陪伴,陪同,伴随,和...一起发生,为...伴奏

accomplish:完成,实现

according:按照,根据

account:叙述,说明,账户

accumulate:积累,积聚

accurate:准确的,精确的

accuse:指责,指控

accustomed:习惯的,惯常的

achieve:完成,实现;达到,得到

achievement:成绩,成就

acknowledge:承认,致谢

acquire:取得,获得,得到

across:横过,穿过;在...对面;宽,阔

act:行动;起作用;表演

active:行动,行动过程 (on)作用

actually:实际上

adapt:使适应,使适合;改编,改写

adequate:足够的,充足的;适当的,胜任的

adjust:调节,改变...以适应;校正,调整

admire:钦佩,赞赏,羡慕

admission:准许进入;承认,供认

adopt:收养;采取,采纳,采用

adult:成年人;成年的,成熟的

advance:前进,向前移动;取得进展;前进,进展;预付,预支

advanced:先进的,高级的

advantage:优点,优势;利益,好处

adventure:冒险,冒险活动;奇遇

advertise:登广告,宣扬

advertisement/ad:广告

affair:事情,事件

affect:影响;打动

afford:买得起,担负的起;提供,给予

afraid:害怕的,恐惧的;担心的

afterward:后来,以后

against:紧靠着;违反;和...对比

age:年龄;时代,时期;变老

agent:代理,代办

agency:代理,待办

agenda:会议事项;议事日程

agriculture:农业

ahead:在前,向前,提前

aid:援助,帮助;助手,辅助手段

aim:把...瞄准,把...对准;致力,旨在;瞄准,对准;目标,目的

air:空气,天空

aircraft:飞机,飞行器

airline:航空公司,航线

airport:机场

alarm:惊恐;报警器;使惊恐,向...报警

alcohol:酒精

alike:相像的

alive:活着的

allow:允许

allowance:津贴补助

almost:几乎,差不多

alphabet:字母表

already:早已经

alter:改变,变更

alternative:选择之事物;选择余地;二者选择其一的(*)

altogether:完全,全部;总而言之;总之,总共

always:总是,始终

amaze:使大为惊奇,使惊愕

ambassador:大使

ambition:有雄心的,野心勃勃的

amend:修正,修订(*)

amount:数量(*)

amuse:逗乐,逗笑;给...提供娱乐

analysis:分析;分解(e ei)

analyze:分析;分解(an)

ancestor:祖先;先驱者

ancient:古代的,古老的

anniversary:周年;周年纪念

announce:宣告,宣布

annoy:使恼怒,使烦恼

annual:每年的,年度的

anticipate:预期;希望(*)

anxiety:焦虑,忧虑;渴望

anxious:焦虑的,发愁的;渴望的,急切的

apart:分离,分开

apartment:公寓

apology:道歉,认错(n)

apologize:道歉(v)

apparent:表面上的,显然的

appeal:恳请,呼吁;上诉

appear:出现,显露;看起来,似乎

appearance:出现,露面;外观,外貌

appdendix:附录,附属物;阑尾(*)

appetite:食欲,胃口;欲望,爱好

appetizing:开胃的,刺激欲望的

applause:鼓掌,欢呼

apply:申请,请求;应用,运用;适用于

appliance:电气用具,装备(美[??pla??ns])(*)

applicant:申请,申请表;应用,实施

appoint:任命,委派;约定/指定(时间、地点)

appointment:约定/指定(时间、地点)

appreciate:重视,欣赏;领会,充分意识到;为..表示感激

appropriate:适当的(*)

approach:靠近,接近;途径,入门;方式,方法

approval:赞成,同意,认可,批准(n)

approve:赞成,同意;认可,批准(v)

April:四月

arbitration:仲裁,公断(*)

argue:争论,争辩

argument:争论,争辩;理由

arise:出现,发生;由...引起,起源于

arm:武器,军火;以武器装备;配备

army:军队;大群,大批

around:在周围,在附近;大约;在...附近

arouse:引起,激起,唤起;唤醒

arrange:安排,筹划;整理,排列,布置

arrest:逮捕,拘留

arrival:到来,到达(n)

arrive:到来,到达;达到,得出

arrow:箭状物

art:美术,艺术

article:文章,论文;条款,条文;件;

artificial:人工的,人造的,人为的;假的,矫揉造作的

artist:艺术家,美术家

ash:灰烬

Asia:亚洲

Asian:亚洲人的;亚洲的;亚洲人

aside:在旁边,到一边

asleep:睡着的

aspect:方面(*)

assess:对...进行评估,评价

assign:指派,选派;分配,布置(作业);指定(时间,地点等)

assignment:(分派的)任务;分配,指派

assist:帮助,协助

assistant:助手,助理;助教;助理的,辅助的

associate:协会,社团;联合,结合,交往,联想(*)

assume:假定,假设;承担(*)

assure:说服,使...相信;向...保证

astonish:使惊讶

athlete:运动员

Atlantic:大西洋的

atmosphere:大气,大气层;气氛

attach:系,贴,紧,装,连接;使成为一部分,使附属;使依(*)

attack:攻击,进攻

attempt:企图,试图

attend:出席,参加;照料,护理,专心于,致力于

attendant:服务员,伴随的,陪同的(*)

attention:注意,当心

attitude:态度,看法;姿势

attract:吸引,引起...的注意

audience:听众,观众,读者

August:八月

aunt:伯母,婶母...

Australia:澳大利亚,澳洲

Australian:澳大利亚人的;澳洲的,澳大利亚人

author:作者

authority:官方,当局,当权者,权力,权威

authorize:授权,委任

auto:汽车

automatic:自动的

automobie/auto:自动的

autumn:秋天,秋季

available:可利用的,可获得的;有空的,可取得联系的

avenue:林荫道,大街

average:平均数

avoid:避免,避开

await:等待,期待

awake:醒着的;唤醒,使觉醒

award:奖品,奖状;授予,给予

awful:可怕的;极度的,极坏的

awkward:粗苯的,笨拙的;令人尴尬的,棘手的

我是热爱学习,热爱编程的呵呵哒!如果你喜欢我的文章,不妨点个赞吧~

有疑问的话可以留言,我会尽我所能回答。

更多原创文章,尽请期待!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐