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()
其结果如下图所示:
这个程序实现的并不是打字速度,而是手速。文本输入控件中的字符每改变一次,就算作一次有效操作,包括增加字符或者删除字符。通过字符变化的次数除以时间,来统计每秒敲击键盘的次数。当敲击回车时,计数清零,重新开始。
先来看初始化函数,定义了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
猜你喜欢
- 本文实例讲述了PHP使用观察者模式处理异常信息的方法。分享给大家供大家参考,具体如下:异常信息的捕获对编程测试有着重要的意义,这里结合观察者
- Python自动的os库是和操作系统交互的库,常用的操作包括文件/目录操作,路径操作,环境变量操作和执行系统命令等。文件/目录操作获取当前目
- Filed under 数据库技术Leave a commentSQL Server命令行导数据两种方式bcp和sqlcmd先说一下bcp:
- 本文介绍的是python中pandas.DataFrame对行与列求和及添加新行与列的相关资料,下面话不多说,来看看详细的介绍吧。方法如下:
- 以下面这个例子作为教程,实现功能是element-wise add;(pytorch中想调用cuda模块,还是用另外使用C编写接口脚本)第一
- 项目需求:将kafka解析来的日志获取到数据库的变更记录,按照订单的级别和订单明细级别写入数据库,一条订单的所有信息包括各种维度信息均保存在
- 做python项目时,想安装某个依赖包的最新版本,但又不知道它的版本号具体到多少,因此需要搜索查看它的相关简介信息.原来的时候,可以直接通过
- 在python中。布尔值有 Ture False 两种。Ture等于对,False等于错。要注意在python中对字母的大小写要求非常严格。
- 环境:xadmin-for-python3 python3.5.2 django1.9.12问题描述:Product ProductSku两
- 看过数据库的备份与还原。大多数都是用组件来完成的。其实可通过sql语句来完成。 由于时间关系,未对参数进行验证和界面美化。代码
- 封装是一个将Python数据对象转化为字节流的过程,拆封是封装的逆操作,将字节文件或字节对象中的字节流转化为Python数据对象,不要从不收
- 本文实例讲述了Flask框架工厂函数用法。分享给大家供大家参考,具体如下:在我们开始学习FLask的时候,创建应用的实例是用app=Flas
- 最近在看python脚本语言,脚本语言是一种解释性的语言,不需要编译,可以直接用,由解释器来负责解释。python语言很强大,而且写起来很简
- 下标所谓下标就是编号,就好比超市中存储柜的编号,通过这个编号就能找到相应的存储空间。Python中字符串,列表,元祖均支持下标索引。例如:#
- 纯粹的截取字符串其实比较简单,用一个Left就搞定,但一个是全英文标题,一个是全中文标题,或中文混合排在一起,长短不一就很明显了,要考虑到中
- digo工具地址:https://github.com/werbenhu/digo特性使用注释中的注解自动代码生成自动检测循环依赖编译时期依
- 本文为大家分享了pygame游戏之旅的第14篇,供大家参考,具体内容如下添加icon需要用的函数是:gameIcon = pygame.im
- 用过QQ的人应该都知道软键盘,他可以增强我们密码的安全性,以保证我们的密码资料不被非法监听。现在软键盘也用在了很多的网站上,像早期银行的在线
- 问题你想通过某种对齐方式来格式化字符串解决方案对于基本的字符串对齐操作,可以使用字符串的 ljust() , rjust() 和 cente
- 这篇文章主要介绍了在SQL Server中处理空值时所涉及的3个问题:计数、使用空表值以及外键处理。用COUNT(*)处理空值大多数集合函数