python光学仿真学习wxpython创建手速测试程序

 更新时间:2021年10月20日 09:10:32   作者:微小冷  
这篇文章主要介绍了python光学仿真学习使用wxpython创建一个手速测试程序示例的实现,有需要的朋友可以借鉴参考下,希望能够有所帮助

滚动条是什么大家自然都是知道的,可以非常直观地显示数据的变化,或者可以非常方便地改变某些数值。

此前在介绍按钮、静态文本、输入文本这三个控件时,相对来说比较乏味,所以这次我们采用需求引导的模式。假如想编写一个软件用来检测打字速度,同时能够非常直观地通过滚动条来显示出来,应该怎么写?

我们大致需要三个控件,文本输入控件用来输入文字;静态文本控件用于显示速度;滚动条用来动态地显示速度。同时,还需要知道系统的时间,总之,代码如下

import wx
import time #时间模块
class testFrame(wx.Frame):
    def __init__(self, parent=None, title="test",size=(300,320)):
        wx.Frame.__init__(self,parent=parent, title=title,size=size)
        self.SetBackgroundColour(wx.Colour(222,222,222))
        self.timeStart=0
        self.count=0
        self.setText = wx.TextCtrl(self,value="input",
            pos=(10,10),size=(240,240),style=wx.TE_MULTILINE)
        self.ratioSlider = wx.Slider(self,
            minValue=0,maxValue=20,pos=(260,10),size=(20,220),
            style=wx.SL_VERTICAL|wx.SL_INVERSE)
        self.ratioLabel = wx.StaticText(self,-1,"0",
            pos=(260,240),size=(20,10))
        self.setText.Bind(wx.EVT_TEXT,self.onCount)
        self.setText.Bind(wx.EVT_TEXT_ENTER,self.onText)
    def onText(self,evt):
        self.count = 0              #敲击回车时,计数清零
        self.timeStart=time.time()  #当前时间,单位为秒
    def onCount(self,evt):
        self.count += 1
        if self.timeStart==0:
            self.timeStart = time.time()
        ratio = self.count/(time.time()-self.timeStart)
        self.ratioSlider.SetValue(ratio)
        self.ratioLabel.SetLabel(str(ratio))
if __name__ == '__main__':
    app = wx.App()
    frame = testFrame(title="test")
    frame.Show()
    app.MainLoop()

其结果如下图所示:

在这里插入图片描述

这个程序实现的并不是打字速度,而是手速。文本输入控件中的字符每改变一次,就算作一次有效操作,包括增加字符或者删除字符。通过字符变化的次数除以时间,来统计每秒敲击键盘的次数。当敲击回车时,计数清零,重新开始。

先来看初始化函数,定义了self.count用于计数,self.timeStart用于记录初始时间,时间模块在一些算法测试中可能会经常用到。

然后是多行文本输入控件,我们为其绑定了两个函数。onText为敲击回车时的事件响应,此时计数归零,并对初始时间重新赋值。onCount表示当内容发生变化时响应,通过计数变量除以时间差从而得到单位时间的操作次数。

然后定义了一个滚动条,minValue、maxValue这两个参数顾名思义,即最小值和最大值。style即风格,此前我们在定义输入文本框时也有提到,但这次定义的风格中多了一个"|"字符。

"|“字符代表或的意思,如果我们希望某个控件同时具备多种风格,即可以用”|"来连接。wx.Slider的风格还是多种多样的。我们所调用的两个风格分别表示:

  • wx.SL_VERTICAL 表示我们创建的是纵向的滑动条。默认为横向,其标志为wx.HORIZONTAL。
  • wx.SL_INVERSE 表示我们翻转最大值和最小值的方向。

以上就是python光学仿真学习使用wxpython创建手速测试程序的详细内容,更多关于wxpython创建手速测试程序的资料请关注脚本之家其它相关文章!

相关文章

  • python实现排序算法

    python实现排序算法

    这篇文章主要介绍了python实现排序算法,处理小序列不错,需要的朋友可以参考下
    2014-02-02
  • Python基础学习之条件控制语句小结

    Python基础学习之条件控制语句小结

    如果我需要设置一个死循环,然后靠条件来终止,怎么办?一个很简单的问题,但是我却没有说,这一篇本应该在分支控制语句里面的,现在只能拿出来水文再写一篇了,需要的朋友可以参考下
    2021-05-05
  • Python使用asyncio包处理并发的实现代码

    Python使用asyncio包处理并发的实现代码

    这篇文章主要介绍了Python使用asyncio包处理并发,asyncio包使用事件循环驱动的协程实现并发,本文通过实例代码给大家介绍的非常详细对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • python 爬取壁纸网站的示例

    python 爬取壁纸网站的示例

    这篇文章主要介绍了python 爬取壁纸网站的示例,帮助大家更好的理解和学习使用python爬虫,感兴趣的朋友可以了解下
    2021-03-03
  • pycharm设置注释颜色的方法

    pycharm设置注释颜色的方法

    今天小编就为大家分享一篇pycharm设置注释颜色的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python3结合openpyxl库实现excel操作的实例代码

    python3结合openpyxl库实现excel操作的实例代码

    这篇文章主要介绍了python3结合openpyxl库实现excel操作的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • Python中uuid模块的应用实例详解

    Python中uuid模块的应用实例详解

    这篇文章主要介绍了Python中uuid模块应用的相关资料,该模块提供了多种方法生成UUID,包括uuid1()、uuid3()、uuid4()和uuid5(),并解释了UUID的格式,UUID在数据库、分布式系统和网络协议中广泛应用,是处理唯一标识符的有力工具,需要的朋友可以参考下
    2024-11-11
  • python进行文件对比的方法

    python进行文件对比的方法

    在本篇内容里小编给分享了关于python进行文件对比的方法和步骤,需要的朋友们可以学习下。
    2018-12-12
  • 通过Python的filestools库给图片添加全图水印的示例详解

    通过Python的filestools库给图片添加全图水印的示例详解

    这篇文章主要介绍了通过Python的filestools库给图片添加全图水印,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • python实现批量下载新浪博客的方法

    python实现批量下载新浪博客的方法

    这篇文章主要介绍了python实现批量下载新浪博客的方法,涉及Python页面抓取的相关实现技巧,需要的朋友可以参考下
    2015-06-06

最新评论