python光學(xué)仿真學(xué)習(xí)wxpython創(chuàng)建手速測試程序
滾動條是什么大家自然都是知道的,可以非常直觀地顯示數(shù)據(jù)的變化,或者可以非常方便地改變某些數(shù)值。
此前在介紹按鈕、靜態(tài)文本、輸入文本這三個控件時,相對來說比較乏味,所以這次我們采用需求引導(dǎo)的模式。假如想編寫一個軟件用來檢測打字速度,同時能夠非常直觀地通過滾動條來顯示出來,應(yīng)該怎么寫?
我們大致需要三個控件,文本輸入控件用來輸入文字;靜態(tài)文本控件用于顯示速度;滾動條用來動態(tài)地顯示速度。同時,還需要知道系統(tǒng)的時間,總之,代碼如下
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 #敲擊回車時,計數(shù)清零 self.timeStart=time.time() #當(dāng)前時間,單位為秒 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()
其結(jié)果如下圖所示:
這個程序?qū)崿F(xiàn)的并不是打字速度,而是手速。文本輸入控件中的字符每改變一次,就算作一次有效操作,包括增加字符或者刪除字符。通過字符變化的次數(shù)除以時間,來統(tǒng)計每秒敲擊鍵盤的次數(shù)。當(dāng)敲擊回車時,計數(shù)清零,重新開始。
先來看初始化函數(shù),定義了self.count用于計數(shù),self.timeStart用于記錄初始時間,時間模塊在一些算法測試中可能會經(jīng)常用到。
然后是多行文本輸入控件,我們?yōu)槠浣壎藘蓚€函數(shù)。onText為敲擊回車時的事件響應(yīng),此時計數(shù)歸零,并對初始時間重新賦值。onCount表示當(dāng)內(nèi)容發(fā)生變化時響應(yīng),通過計數(shù)變量除以時間差從而得到單位時間的操作次數(shù)。
然后定義了一個滾動條,minValue、maxValue這兩個參數(shù)顧名思義,即最小值和最大值。style即風(fēng)格,此前我們在定義輸入文本框時也有提到,但這次定義的風(fēng)格中多了一個"|"字符。
"|“字符代表或的意思,如果我們希望某個控件同時具備多種風(fēng)格,即可以用”|"來連接。wx.Slider的風(fēng)格還是多種多樣的。我們所調(diào)用的兩個風(fēng)格分別表示:
- wx.SL_VERTICAL 表示我們創(chuàng)建的是縱向的滑動條。默認(rèn)為橫向,其標(biāo)志為wx.HORIZONTAL。
- wx.SL_INVERSE 表示我們翻轉(zhuǎn)最大值和最小值的方向。
以上就是python光學(xué)仿真學(xué)習(xí)使用wxpython創(chuàng)建手速測試程序的詳細(xì)內(nèi)容,更多關(guān)于wxpython創(chuàng)建手速測試程序的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python對站點數(shù)據(jù)做EOF且做插值繪制填色圖
這篇文章主要介紹了python對站點數(shù)據(jù)做EOF且做插值繪制填色圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,,需要的小伙伴可以參考一下2022-09-09關(guān)于numpy數(shù)組中元素單個選取或部分選取問題
這篇文章主要介紹了關(guān)于numpy數(shù)組中元素單個選取或部分選取問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Python matplotlib 繪制雙Y軸曲線圖的示例代碼
Matplotlib是非常強大的python畫圖工具,這篇文章主要介紹了Python matplotlib 繪制雙Y軸曲線圖,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06python機器學(xué)習(xí)實現(xiàn)神經(jīng)網(wǎng)絡(luò)示例解析
這篇文章主要為大家介紹了python機器學(xué)習(xí)python實現(xiàn)神經(jīng)網(wǎng)絡(luò)的示例解析,在同樣在進行python機器學(xué)習(xí)的同學(xué)可以借鑒參考下,希望能夠有所幫助2021-10-10MxNet預(yù)訓(xùn)練模型到Pytorch模型的轉(zhuǎn)換方式
這篇文章主要介紹了MxNet預(yù)訓(xùn)練模型到Pytorch模型的轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05