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

作者:微小冷 时间:2023-12-06 20:57:28 

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

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

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


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()

其结果如下图所示:

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

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

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

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

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

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

  • wx.SL_VERTICAL 表示我们创建的是纵向的滑动条。默认为横向,其标志为wx.HORIZONTAL。

  • wx.SL_INVERSE 表示我们翻转最大值和最小值的方向。

来源:https://blog.csdn.net/m0_37816922/article/details/98328789

标签:光学仿真,wxpython,手速测试
0
投稿

猜你喜欢

  • OpenCV使用KNN完成OCR手写体识别

    2022-02-17 12:16:21
  • Opencv-Python图像透视变换cv2.warpPerspective的示例

    2023-06-27 19:03:18
  • Mysql的Binlog数据恢复:不小心删除数据库详解

    2024-01-18 21:23:29
  • js和php邮箱地址验证的实现方法

    2024-06-05 09:38:13
  • Django 博客实现简单的全文搜索的示例代码

    2023-12-07 10:09:19
  • python图形用户界面tkinter之按钮Button的使用说明

    2022-09-14 06:48:28
  • 不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)

    2021-07-08 07:35:00
  • Python如何处理异常报错方法(建议收藏!)

    2022-08-09 03:19:13
  • ASP + XML + JavaScript 实现动态无限级联动菜单

    2008-06-13 06:31:00
  • Python数据挖掘Pandas详解

    2021-08-04 13:11:44
  • js constructor的实际作用分析

    2024-02-25 01:41:31
  • Python使用pygame模块编写俄罗斯方块游戏的代码实例

    2021-11-15 02:29:29
  • 微信小程序 支付功能实现PHP实例详解

    2023-11-19 08:53:36
  • python如何导出微信公众号文章方法详解

    2022-10-01 00:31:27
  • 解决GOPATH在GOLAND中的坑

    2023-07-12 23:46:16
  • Pandas标记删除重复记录的方法

    2022-04-26 13:53:31
  • sql server中千万数量级分页存储过程代码

    2024-01-18 04:36:20
  • 基于PyQt4和PySide实现输入对话框效果

    2023-06-11 13:30:58
  • MySQL UNION操作符基础知识点

    2024-01-21 10:24:31
  • asp如何去除HTML标签

    2010-06-07 20:47:00
  • asp之家 网络编程 m.aspxhome.com