人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

python光學(xué)仿真學(xué)習(xí)wxpython創(chuàng)建手速測(cè)試程序

發(fā)布日期:2021-12-23 01:04 | 文章來(lái)源:CSDN

滾動(dòng)條是什么大家自然都是知道的,可以非常直觀地顯示數(shù)據(jù)的變化,或者可以非常方便地改變某些數(shù)值。

此前在介紹按鈕、靜態(tài)文本、輸入文本這三個(gè)控件時(shí),相對(duì)來(lái)說(shuō)比較乏味,所以這次我們采用需求引導(dǎo)的模式。假如想編寫一個(gè)軟件用來(lái)檢測(cè)打字速度,同時(shí)能夠非常直觀地通過(guò)滾動(dòng)條來(lái)顯示出來(lái),應(yīng)該怎么寫?

我們大致需要三個(gè)控件,文本輸入控件用來(lái)輸入文字;靜態(tài)文本控件用于顯示速度;滾動(dòng)條用來(lái)動(dòng)態(tài)地顯示速度。同時(shí),還需要知道系統(tǒng)的時(shí)間,總之,代碼如下

import wx
import time #時(shí)間模塊
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í),計(jì)數(shù)清零
  self.timeStart=time.time()  #當(dāng)前時(shí)間,單位為秒
 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é)果如下圖所示:

這個(gè)程序?qū)崿F(xiàn)的并不是打字速度,而是手速。文本輸入控件中的字符每改變一次,就算作一次有效操作,包括增加字符或者刪除字符。通過(guò)字符變化的次數(shù)除以時(shí)間,來(lái)統(tǒng)計(jì)每秒敲擊鍵盤的次數(shù)。當(dāng)敲擊回車時(shí),計(jì)數(shù)清零,重新開(kāi)始。

先來(lái)看初始化函數(shù),定義了self.count用于計(jì)數(shù),self.timeStart用于記錄初始時(shí)間,時(shí)間模塊在一些算法測(cè)試中可能會(huì)經(jīng)常用到。

然后是多行文本輸入控件,我們?yōu)槠浣壎藘蓚€(gè)函數(shù)。onText為敲擊回車時(shí)的事件響應(yīng),此時(shí)計(jì)數(shù)歸零,并對(duì)初始時(shí)間重新賦值。onCount表示當(dāng)內(nèi)容發(fā)生變化時(shí)響應(yīng),通過(guò)計(jì)數(shù)變量除以時(shí)間差從而得到單位時(shí)間的操作次數(shù)。

然后定義了一個(gè)滾動(dòng)條,minValue、maxValue這兩個(gè)參數(shù)顧名思義,即最小值和最大值。style即風(fēng)格,此前我們?cè)诙x輸入文本框時(shí)也有提到,但這次定義的風(fēng)格中多了一個(gè)"|"字符。

"|“字符代表或的意思,如果我們希望某個(gè)控件同時(shí)具備多種風(fēng)格,即可以用”|"來(lái)連接。wx.Slider的風(fēng)格還是多種多樣的。我們所調(diào)用的兩個(gè)風(fēng)格分別表示:

  • wx.SL_VERTICAL 表示我們創(chuàng)建的是縱向的滑動(dòng)條。默認(rèn)為橫向,其標(biāo)志為wx.HORIZONTAL。
  • wx.SL_INVERSE 表示我們翻轉(zhuǎn)最大值和最小值的方向。

以上就是python光學(xué)仿真學(xué)習(xí)使用wxpython創(chuàng)建手速測(cè)試程序的詳細(xì)內(nèi)容,更多關(guān)于wxpython創(chuàng)建手速測(cè)試程序的資料請(qǐng)關(guān)注本站其它相關(guān)文章!

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部