Python-在CMD控制臺(tái)中實(shí)現(xiàn)多功能可控制字符串輸入條

概述:

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é)果展示

示例1執(zhí)行結(jié)果展示

示例2:

#-*-coding:utf-8-*-
import pycinputbar
print                                   #打印一個(gè)空行器腋,只是為了美觀
pycinputbar.inputbar(u'請(qǐng)輸入字符:',u'abc一二三',20)

示例2執(zhí)行結(jié)果展示

示例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é)果展示

示例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é)果展示

示例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)存在)虚婿。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末旋奢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子然痊,更是在濱河造成了極大的恐慌黄绩,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玷过,死亡現(xiàn)場(chǎng)離奇詭異爽丹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)辛蚊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門粤蝎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人袋马,你說我怎么就攤上這事初澎。” “怎么了虑凛?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵碑宴,是天一觀的道長。 經(jīng)常有香客問我桑谍,道長延柠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任锣披,我火速辦了婚禮贞间,結(jié)果婚禮上贿条,老公的妹妹穿的比我還像新娘。我一直安慰自己增热,他們只是感情好整以,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著峻仇,像睡著了一般公黑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摄咆,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天帆调,我揣著相機(jī)與錄音,去河邊找鬼豆同。 笑死番刊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的影锈。 我是一名探鬼主播芹务,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鸭廷!你這毒婦竟也來了枣抱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤辆床,失蹤者是張志新(化名)和其女友劉穎佳晶,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讼载,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轿秧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了咨堤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菇篡。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖一喘,靈堂內(nèi)的尸體忽然破棺而出驱还,到底是詐尸還是另有隱情,我是刑警寧澤凸克,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布议蟆,位于F島的核電站,受9級(jí)特大地震影響萎战,放射性物質(zhì)發(fā)生泄漏咐容。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一撞鹉、第九天 我趴在偏房一處隱蔽的房頂上張望疟丙。 院中可真熱鬧颖侄,春花似錦鸟雏、人聲如沸享郊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炊琉。三九已至,卻和暖如春又活,著一層夾襖步出監(jiān)牢的瞬間苔咪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來泰國打工柳骄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留团赏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓耐薯,卻偏偏與公主長得像舔清,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子曲初,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容