滚动条是什么大家自然都是知道的,可以非常直观地显示数据的变化,或者可以非常方便地改变某些数值。
此前在介绍按钮、静态文本、输入文本这三个控件时,相对来说比较乏味,所以这次我们采用需求引导的模式。假如想编写一个软件用来检测打字速度,同时能够非常直观地通过滚动条来显示出来,应该怎么写?
我们大致需要三个控件,文本输入控件用来输入文字;静态文本控件用于显示速度;滚动条用来动态地显示速度。同时,还需要知道系统的时间,总之,代码如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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创建手速测试程序的资料请关注服务器之家其它相关文章!
原文链接:https://blog.csdn.net/m0_37816922/article/details/98328789