2016-11-22 60 views
-1

我想交互驗證tkinter中的入口小部件只允許用戶在字母表中輸入字符。 我已經閱讀了一個非常受歡迎的主題(Interactively validating Entry widget content in tkinter),從中我試圖找出我的解決方案,但我似乎無法得到它的工作。 在該線程的評論是一個只允許使用數字的解決方案,我已經使用了我的程序的一個區域,它完美的工作!代碼在這裏:無法理解如何驗證tkinter中的入口小部件

from tkinter import * 

root = Tk() 

def testVal(inStr,i,acttyp): 
    ind=int(i) 
    if acttyp == '1': #insert 
     if not inStr[ind].isdigit(): 
      return False 
    return True 

entry = Entry(root, validate="key") 
entry['validatecommand'] = (entry.register(testVal),'%P','%i','%d') 
entry.pack() 

root.mainloop() 

我想這樣的解決方案,唯一的變化是,它接受字母,而不是數字。任何幫助表示讚賞

+1

只需用'isd替換'isdigit' alpha'? – acdr

回答

1

這裏就是你正在尋找的解決方案:

def testVal(inStr,i,acttyp): 
    ind=int(i) 
    if acttyp == '1': #insert 
     if not inStr[ind].isalpha(): 
      return False 
    return True 

下面有一些其他的東西,這可能是有用的:

  • .isdigit()測試一個字符串是否是一個整數
  • .isalpha()測試字符串是否只包含字母
  • .isalnum()測試,如果字符串只包含字母和數字
  • .isupper()測試大寫
  • .islower()試驗小寫

對於其他數據類型,你可以使用isinstance(),例如isinstance("34.5", float)將返回True

來源:https://docs.python.org/3/library/stdtypes.html

+0

謝謝你它的工作很好,我沒有意識到isalpha()我早些時候嘗試了ischar(),因爲我猜想它可能工作,因爲它似乎合乎邏輯。 – JoeW373