概述:
pycinputbar是一個(gè)Python模塊毅臊,可以在Windows控制臺(tái)(CMD)中實(shí)現(xiàn)可以控制的輸入條榕吼,返回一個(gè)Unicode字符串饿序。
目前該模塊只支持Python2。
目前版本實(shí)現(xiàn)了基本的輸入功能羹蚣。同時(shí)支持字符串長度限制嗤堰,響應(yīng)左右光標(biāo)鍵,BackSpace鍵度宦、Delete(Del)鍵踢匣,字符插入等功能。
pycinputbar需要WConio模塊支持戈抄,WConio模塊官方地址:http://newcenturycomputers.net/projects/wconio.html
項(xiàng)目地址:
https://code.csdn.net/hymyg/pycinputbar/tree/master
版本更新:
V0.1
實(shí)現(xiàn)了基本的輸入功能离唬。
支持字符串長度限制,響應(yīng)左右光標(biāo)鍵划鸽,BackSpace鍵输莺、Delete(Del)鍵,字符插入
V0.2
增加 顯示默認(rèn)字符串功能裸诽,可在命令執(zhí)行時(shí)在輸入條中顯示用戶自已定義的字符串以達(dá)到對(duì)現(xiàn)有變量修改的作用嫂用。
V0.3
增加 字符校驗(yàn)功能。
增加 字符串錄入時(shí)顯示為*號(hào)問題(可用來作為密碼錄入框)
安裝:
將pycinputbar.py文件復(fù)制到python2安裝路徑下的Lib\site-packages目錄中丈冬。
示例:
我使用的是python2.7.12嘱函,安裝目錄是C:\Program Files (x86)\python\Python27,將pycmenu.py文件復(fù)制到C:\Program Files (x86)\python\Python27\Lib\site-packages路徑下即可
使用說明:
inputbar(prompt,text,length,check=True)
參數(shù):
prompt
提示信息埂蕊,必須為unicode編碼,所以字符串前面要加前綴u
text
默認(rèn)(初始)字符串內(nèi)容往弓,通常對(duì)一個(gè)已經(jīng)存在的字符串進(jìn)行修改時(shí)使用。該參數(shù)也必須為unicode格式的字符串蓄氧。
length
字符串長度函似,一個(gè)漢字的長度為2
check
check參數(shù)是用來對(duì)已經(jīng)輸入的字符串進(jìn)行校驗(yàn)。
check有兩種情況喉童,一種可以是一個(gè)值撇寞,另一種可以是一個(gè)函數(shù)。
check是一個(gè)值時(shí)又分三種情況:
1、這個(gè)值如果為True或是其他任何非0的值蔑担,輸入框可以輸入任意可打印字符露氮,即不做任何校驗(yàn)。
2钟沛、這個(gè)值如果是False或是0畔规,則此輸入框不接受任何輸入(這個(gè)功能其實(shí)是程序?qū)崿F(xiàn)過程中的副產(chǎn)品,想著也許會(huì)有人用的著恨统,就保留了)叁扫。
3、這個(gè)值如果是'*'畜埋,則輸入的字符只顯示為*號(hào)莫绣,一般在輸入密碼時(shí)使用。
check是一個(gè)函數(shù)時(shí)悠鞍,事實(shí)上是提供了一個(gè)接口对室,可以由用戶自己定義字符串的校驗(yàn)函數(shù)。每輸入一個(gè)字符或漢字時(shí)咖祭,該校驗(yàn)函數(shù)都會(huì)對(duì)已經(jīng)輸入部分的字符串進(jìn)行檢驗(yàn)掩宜,如果滿足函數(shù)內(nèi)部條件的限制(函數(shù)返回Ture or False),滿足則接受輸入么翰,否則不接受輸入牺汤。
參數(shù):這個(gè)函數(shù)必須有一個(gè)text參數(shù)用來接受用戶輸入的字符串。
text 當(dāng)前已經(jīng)錄入的字符串浩嫌,在input()主函數(shù)中由程序自己傳入檐迟。
格式為:
check(text)
返回值:
返回值只能是True,或是False
True 當(dāng)返回值是True時(shí)代表接受這個(gè)字符的輸入這個(gè)字符的輸入
False 當(dāng)返回值是False時(shí)代表不接受這個(gè)字符的輸
check默認(rèn)值為True
示例1:
#-*-coding:utf-8-*-
import pycinputbar
print #打印一個(gè)空行码耐,只是為了美觀
pycinputbar.inputbar(u'請(qǐng)輸入姓名:',u'',4)
示例1執(zhí)行結(jié)果展示
示例2:
#-*-coding:utf-8-*-
import pycinputbar
print #打印一個(gè)空行器腋,只是為了美觀
pycinputbar.inputbar(u'請(qǐng)輸入字符:',u'abc一二三',20)
示例2執(zhí)行結(jié)果展示
示例3:(對(duì)現(xiàn)有變量進(jìn)行修改)
#-*-coding:utf-8-*-
import pycinputbar
print #打印一個(gè)空行熏挎,只是為了美觀
a=pycinputbar.inputbar(u'請(qǐng)輸入變量a的值:',u'',20)
print a
a=pycinputbar.inputbar(u'對(duì)變量值a進(jìn)行修改:',a,20)
print a
示例3執(zhí)行結(jié)果展示
示例4(密碼框)
#-*-coding:utf-8-*-
from pycinputbar import inputbar
print
password=inputbar(u'請(qǐng)輸入密碼:',u'',8,'*')
print
print u'你的密碼是:',password
示例4執(zhí)行結(jié)果展示
示例5(使用自定義函數(shù)對(duì)輸入進(jìn)行校驗(yàn))
#-*-coding:utf-8-*-
from pycinputbar import inputbar
def limit(text):
'''
限定第一位能輸入字符D集晚,第二位只能輸入A炸渡、B、C三個(gè)字符中的一個(gè)桦沉,第五位只能輸入字符8
'''
for i in range(len(text)):
if i==0:
if text[i]!=u'D':
return False
elif i==1:
if text[i] not in u'ABC':
return False
elif i==4:
if text[i]!=u'8':
return False
return True #這個(gè)return不能放在for循環(huán)中
print
password=inputbar(u'請(qǐng)輸入字符串:',u'',8,limit)
print
print u'你的字符串是:',password
示例5說明(供新手參考每瞒,高手繞行)
1金闽、示例5中的代碼執(zhí)行效果因?yàn)槭莿?dòng)態(tài)的纯露,截圖不能表達(dá)的清楚,所以省略截圖代芜。文字描述就是用戶錄入時(shí)埠褪,錄入到相應(yīng)位置的字符,如果跟limit函數(shù)中的條件不符合,則輸入框不會(huì)接受輸入钞速,但從界面上來看不會(huì)有任何變化贷掖。通俗的講就是不符合條件的字符打不上屏幕。
2渴语、示例5代碼中的 password=inputbar(u'請(qǐng)輸入字符串:',u'',8,limit)中的
limit雖然是一個(gè)函數(shù)苹威,但在寫入時(shí)不需要加括號(hào)寫在limit()的形式。
3驾凶、用來作為check參數(shù)的自定義函數(shù)limit(text)中的代碼只是參考牙甫,當(dāng)然寫法也可以多種多樣,但在寫入的時(shí)候要考慮到IndexError的問題调违。
比如直接使用text[5]時(shí)要確保text字符串第6位字符已經(jīng)存在(被用戶錄入)窟哺,否則會(huì)出現(xiàn) IndexError: string index out of range
錯(cuò)誤提示。所以示例5代碼中通過for循環(huán)和if語句來避免這種情況的發(fā)生技肩。
當(dāng)然且轨,也可以使用正則表達(dá)式進(jìn)行校驗(yàn),但同樣正則表達(dá)式的代碼要考慮到你設(shè)定條件的字符位已經(jīng)被用戶輸入(即是否已經(jīng)存在)虚婿。