一、写在前面

说道程序员,你会想到什么呢?有人认为程序员象征着高薪,有人认为程序员都是死肥宅,还有人想到的则是996和 ICU。

别人眼中的程序员:飞快的敲击键盘、酷炫的切换屏幕、各种看不懂的字符代码。

然而现实中的程序员呢?对于很多程序员来说,没有百度和 Google 解决不了的问题,也没有 ctrl + c 和 ctrl + v 实现不了的功能。

那么身为一个程序员,要怎么让自己看起来更加“专业”呢?答案就是加快自己的打字速度了,敲的代码可能是错的,但这个13却是必须装的!

然而还是有不少人打字不那么快的,可能就需要训练下了,但是既然身为程序员,为何不自己写一个训练打字的小工具出来呢?

二、基本思路

使用 PyQT5 开发 GUI,实现显示句子并让用户输入,然后将输入的内容和给出的句子进行比对,同时记录所用的时间,最后将正确率输出来。为了能够持续打字输入,还需要做一个“下一句”的功能。在实现了这两个基本的功能后,一个简单的打字训练小工具就做出来了。

三、界面设计

1.环境配置

PyQT5 的开发环境配置在上一篇博客中已经说过了,因而这里不再赘述,如果不清楚的可以点这里查看。

2.界面设计

要进行界面设计,得先打开 QtDesigner,然后新建项目,选择 Widget:

然后就往里面拖控件就好了,这还是很方便的,主要用的控件包括 Label、Text Edit、Push Button等,双击控件之后可以在右侧修改控件的各种属性。最终设计出的界面如下:

3.生成 Python 代码

在设计完界面之后,将生成的结果保存下来,会得到一个 .ui 为后缀的文件。这个文件我们还是无法直接使用的,需要转变成 Python 代码才行。此时就需要使用 pyuic5 命令了,不懂的可以点这里查看我的上篇博客。

四、槽函数

1.槽函数简介

要进行功能设计,就得先知道槽函数。槽是普通的 C++ 成员函数,槽在 Qt 开发软件中是一个很重要的概念,在 Qt 里与信号连接的就是槽,我们一般称之为槽函数。

在使用信号的时候,有四个参数:

1)sender:发出信号的对象;

2)signal:发送对象发出的信号;

3)receiver:接收信号的对象;

4)slot:接收对象在接收到信号之后所需要调用的函数(槽函数)。

2.使用方法

(1)第一种方法

第一步,在 QtDesigner 中点击 “Edit Signals/Slots”,然后左键点击按钮后将鼠标拖到另一个 Label 上:

第二步,在弹出的设置框中选择具体的方法及功能。

这样做很简单,但是也有缺陷,问题在于不能自定义方法,只能使用给定的方法。

(2)第二种方法

在右下角找到 “Signal/Slot Editor” 并点击,然后就可以点击 “+” 创建信号了。

这种方法能够让我们自定义了,但是也不算方便,尤其是当你不知道具体要实现什么方法的时候。

(3)第三种方法

使用 connect() 方法,传入的参数为一个方法名称。例如:

btn.clicked.connect(func)

五、功能实现

1.继承函数

使用 pyuic5 生成 py 文件中定义了一个 Ui_Form 类,其中包含了对各种控件的定义等,如果我们要增加其他功能,且直接在这个 py 文件中修改的话,那么之后要更新界面之类的就不会不方便了,所以最好的方法是继承 Ui_Form 类,然后在继承类中添加修改。参考代码如下:

import sys

from PyQt5 import QtWidgets

from typing.ui import Ui_Form

class MyForm(Ui_Form, QtWidgets.QWidget):

def __init__(self):

super(MyForm, self).__init__()

self.setupUi(self)

if __name__ == '__main__':

app = QtWidgets.QApplication(sys.argv)

my_form = MyForm()

my_form.show()

sys.exit(app.exec_())

2.隐藏显示控件

有时候我们可能会需要将某些控件隐藏起来,这里简单介绍几种方法。

1)setHidden(bool) 设置控件是否隐藏;

2)hide() 隐藏控件;

这两种隐藏的方法会完全隐藏控件,即不保留控件所占的位置。但如果要保留位置的话,可以使用下面这种方法:

def click(self):

"""

点击按钮时调用

:return:

"""

self.get_time()

the_input = self.textEdit.toPlainText()

# 计算准确率

count = 0

for i in range(len(the_input)):

if the_input[i] == self.text[i]:

count += 1

accuracy = count / len(self.text) * 100

# print(accuracy)

self.show_label()

# 设置提示信息

info = "有点可惜,你的正确率是: %.2f%% " % accuracy if accuracy != 100 else "恭喜你全对了呢!继续加油哦!"

self.info_lable.setText(info)

3.判断输入内容

这一功能的实现需要在点击“提交”按钮时获取输入框中的内容,再和给出的文本进行对比,最后将结果返回显示出来。

代码如下:

1 def click(self): 2 """ 3 点击按钮时调用 4 :return: 5 """ 6 self.get_time() 7 the_input = self.textEdit.toPlainText() 8 # 计算准确率 9 count = 010 for i in range(len(the_input)):11 if the_input[i] == self.text[i]:12 count += 113 accuracy = count / len(self.text) * 10014 # print(accuracy)15 self.show_label()16 # 设置提示信息17 info = "有点可惜,你的正确率是: %.2f%% " % accuracy if accuracy != 100 else "恭喜你全对了呢!继续加油哦!"18 self.info_lable.setText(info)

对于我这种懒人来说,点击按钮这种操作都是费力的,所以最好加入一个快捷键,这样就方便多了,可以使用如下方法设置:

# 设置快捷键

self.submit_btn.setShortcut('ctrl+e')

六、运行结果

最终运行结果的截图如下:

提交之后还可以点击下一句继续训练:

完整代码已上传到 GitHub!

总结

以上所述是小编给大家介绍的使用Python制作一个打字训练小工具,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

时间: 2019-09-28

python打字_使用Python制作一个打字训练小工具相关推荐

  1. python绘制自己的名字_用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名...

    生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本 ...

  2. 用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名

    生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本 ...

  3. 艺术签名python_用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名...

    生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本 ...

  4. 微信小程序|使用小程序制作一个时间管理小工具

    适时而学,适时而息,张弛有度的生活态度才能让我们走得更远.此文使用小程序制作一个日程管理小工具,将时间进行分解以实现有效管理. 开发步骤 一.创建小程序 二.功能实现 2.1.首页 2.2.记录页 3 ...

  5. 用Python制作一个随机抽奖小工具

    最近在工作中面向社群玩家组织了一场活动,需要进行随机抽奖,参考之前小明大佬的案例,再结合自己的需求,做了一个简单的随机抽奖小工具. 今天我就来顺便介绍一下这个小工具的制作过程吧! 先看效果: 1. 核 ...

  6. 用Python制作一个数据预处理小工具,多种操作,一键完成,非常实用!

    在我们平常使用Python进行数据处理与分析时,在import完一大堆库之后,就是对数据进行预览,查看数据是否出现了缺失值.重复值等异常情况,并进行处理. 本文将结合GUI工具PySimpleGUI, ...

  7. 如何用excel制作xy曲线图_用Excel制作一个简易抽奖小程序,可一次抽取多人

    抽奖程序在很多场合都能派上用场,比如商场开业促销.课堂点名.抽取幸运观众等.我们今天就用Excel来制作一个简单的抽奖小程序,仅做参考. 抽奖小程序是下图这个样子的.我们按一下键盘上的F9键,即可完成 ...

  8. Python制作一个线性代数计算小工具<1.0>

  9. 微信小程序|使用小程序制作一个世界杯球员识别工具

    一.前言 二.实现流程 三.功能开发 四.代码块 一.前言 四年一次的世界杯正在卡塔尔进行着,不同的社交圈也在疯狂的刷着世界杯的动态,来自全球各地的三十二支队伍的球员是否让你看的眼花缭乱呢? 当朋友跟 ...

最新文章

  1. haproxy负载均衡_做负载均衡Nginx、HAProxy和LVS总有一个适合你
  2. python操作系统-PYTHON-操作系统基础
  3. CentOS6.5升级到CentOS7
  4. ECCV 2018 | Bi-box行人检测:‘行人遮挡’为几何?
  5. django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用...
  6. JDBC登录功能实现
  7. 开源性能测试工具 - Apache ab 介绍
  8. Axure 经典实例高保真原型下载(Axure高保真企业办公oa系统OA协同办公后台管理会议管理用户管理统计分析活动管理+考勤管理+档案管理+行政支持管理)
  9. 常用的SEO工具都有哪些呢?5个SEO必备优化工具推荐
  10. 【全套资料.zip下载】数电课设-色子骰子模拟电路Multisim仿真设计【Multisim仿真+报告+讲解视频.zip下载】
  11. 两个excel表格取交集_(怎么用excel把两个表格数据做交集)如何把不同excel表格数据取交集...
  12. 靶机-droopyCTF Walkthrough
  13. 【Flutter实战静态页面】--在线点餐app(7)——页面跳转
  14. 详解floor函数、ceil函数和round函数
  15. [精简]托福核心词汇100
  16. JavaWeb开发日记
  17. Ubuntu20.04美化桌面 dock栏居中
  18. Python 1-07 数字
  19. 【手机电子杂志制作】名编辑电子杂志大师教程 | 手机版模板以及主题设置
  20. 随机波浪谱分析——自相关函数法 (MATLAB)

热门文章

  1. 重定向--Linux bash
  2. 官网下载VMware Workstation Player 16、15、14
  3. 给初学者推荐的10个Python免费学习网站!赶紧收藏吧!
  4. 那些年奋斗的日子,岁月静好
  5. 如何书写一手优雅的代码之小刚有话说
  6. 开启TX2、Xavier最大性能 Opening the Max performance of TX2、Xavier
  7. uni-app 170邀请加入群聊(二)
  8. 小标题 html,论文的小标题格式
  9. ZT 计算一个无符整数中1Bit的个数(1) 2010-04-20 10:52:48
  10. Python——单线程与多线程