您好,登錄后才能下訂單哦!
這篇文章主要介紹“tkinter entry文本框如何限定輸入數(shù)字”,在日常操作中,相信很多人在tkinter entry文本框如何限定輸入數(shù)字問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”tkinter entry文本框如何限定輸入數(shù)字”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
代碼:
from tkinter import *
from tkinter import messagebox
root=Tk()
def com():
try:
float(e1.get())#獲取e1的值,轉(zhuǎn)為浮點(diǎn)數(shù),如果不能轉(zhuǎn)捕獲異常
l1.config(text=e1.get())
except:
messagebox.showwarning('警告','請(qǐng)輸入數(shù)字')
e1=Entry(root)
e1.pack()
Button(root,text='獲取',command=com).pack()
l1=Label(root,text='只能數(shù)字')
l1.pack()
mainloop()
補(bǔ)充:python Entry 文本框只能輸入數(shù)字或限定數(shù)字顯示
先給大家看代碼,表示對(duì)大家急切想法的尊敬,如果你著急用,直接拿去,不明白的話回來(lái)再看看后續(xù),我爭(zhēng)取講的明白,我也是一個(gè)小白,我只能按照我自己的意思去寫(xiě),如果有補(bǔ)充或者修改請(qǐng)聯(lián)系我,也請(qǐng)不要完全相信我,我不喜歡把你們帶到歧途?。?!
import tkinter#界面繪制前初始化TK()
from tkinter import *
from PIL import Image,ImageTk
from tkinter import messagebox
#打開(kāi)指定的圖片文件,縮放至指定尺寸
def get_image(filename,width,height):
im = Image.open(filename).resize((width,height))
return ImageTk.PhotoImage(im)
win = tkinter.Tk() #初始化TK() 創(chuàng)建主窗口
#設(shè)置標(biāo)題
win.title("至多和")
#設(shè)置界面在中間啟動(dòng)
def center_window(w,h):
#獲取屏幕高和寬
ws = win.winfo_screenwidth()
hs = win.winfo_screenheight()
#計(jì)算x,y位置
x = (ws/2) - (w/2)
y = (hs/2) - (h/2)
win.geometry("%dx%d+%d+%d" %(w,h,x,y)) #設(shè)置位置和大小
center_window(300,200) #設(shè)置界面大小
win.resizable(False,False) #固定其窗口的大小 也可以允許更改大小,改為T(mén)RUE 就可以
#創(chuàng)建畫(huà)布,設(shè)置要顯示的圖片,把畫(huà)布添加至應(yīng)用程序窗口
canvas_win = tkinter.Canvas(win,width=300,height=200)
im_win = get_image('小貓啟動(dòng)界面.jpg',300,200)#設(shè)置圖片的大小
canvas_win.create_image(150,100,image=im_win)
canvas_win.pack()
#設(shè)置圖標(biāo)
win.iconbitmap(".\bitbug_favicon.ico")
#設(shè)置文本只能輸入數(shù)字
def test(content):
# 如果不加上==""的話,就會(huì)發(fā)現(xiàn)刪不完。總會(huì)剩下一個(gè)數(shù)字 isdigit函數(shù):isdigit函數(shù)方法檢測(cè)字符串是否只由數(shù)字組成。
if content.isdigit() or content == "":
return True
else:
return False
def number():
int
##顯示文本框作為輸入框,以及標(biāo)簽作為信息
lable1 = Label(win,text="賬號(hào):",)
lable1.place(x=60,y=30)
v = StringVar() #跟蹤變量的值的變化,以保證值的變更隨時(shí)可以顯示在界面上
test_cmd = win.register(test) # 需要將函數(shù)包裝一下,必要的
textEntry1 = Entry(win,bd=0,font=("華文彩云",12),relief=RIDGE,bg="lightcyan",
textvariable = v, #文本框的值,是一個(gè)StringVar()對(duì)象 ,這樣與StringVar 就能更新
validate = "key", # 發(fā)生任何變動(dòng)的時(shí)候,就會(huì)調(diào)用validatecommand 這個(gè)調(diào)動(dòng)受后面‘Key'影響,類似鍵盤(pán)監(jiān)聽(tīng) 如果換成“'focusout'"就是光標(biāo)
validatecommand = (test_cmd, '%P') # %P代表輸入框的實(shí)時(shí)內(nèi)容 # %P表示 當(dāng)輸入框的值允許改變,該值有效。該值為當(dāng)前文本框內(nèi)容 # %v(小寫(xiě)大寫(xiě)不一樣的),當(dāng)前validate的值 # %W表示該組件的名字
)
textEntry1.place(x=100,y=30,width=130,height=25)
lable2 = Label(win,text="密碼:")
lable2.place(x=60,y=60)
textEntry2 = Entry(win,bd=0,font=("華文彩云"),relief=RIDGE,bg="lightcyan")
textEntry2.place(x=100,y=60,width=130)
win.mainloop()
跟蹤變量的值的變化,以保證值的變更隨時(shí)可以顯示在界面上。通過(guò)我的查找,這個(gè)函數(shù)存在Tk模塊中,其他的我還沒(méi)有查到,這個(gè)是為了能隨時(shí)更新文本框內(nèi)的內(nèi)容,所以這個(gè)函數(shù)要用到
這個(gè)函數(shù)在Entry的括號(hào)內(nèi)出現(xiàn)的,這個(gè)是和StringVar進(jìn)行配合,然后進(jìn)行更新內(nèi)容。
這兩個(gè)函數(shù),講真我還沒(méi)有發(fā)現(xiàn)能分開(kāi)用,一個(gè)類似于驅(qū)動(dòng),一個(gè)就是類似于被驅(qū)動(dòng)后的命令,validate就是驅(qū)動(dòng)著validatecommand,也可以說(shuō)來(lái)就是調(diào)用。
validate他的值當(dāng)然可以有很多的,我就說(shuō)兩個(gè)一個(gè)是等于Key也就是代碼中的key就是為了鍵盤(pán)監(jiān)聽(tīng)吧,另一個(gè)是focusout屬于光標(biāo)監(jiān)聽(tīng),只要有動(dòng)作,就會(huì)調(diào)用validatecommand函數(shù),他有兩個(gè)變量:一個(gè)是調(diào)用另一個(gè)函數(shù),另一個(gè):
%P表示 當(dāng)輸入框的值允許改變,該值有效。該值為當(dāng)前文本框內(nèi)容
%v(小寫(xiě)大寫(xiě)不一樣的),當(dāng)前validate的值
%W表示該組件的名字
isdigit函數(shù)方法檢測(cè)字符串是否只由數(shù)字組成。
這個(gè)函數(shù)解釋有很多,
第一個(gè):是python抽象類—register注冊(cè)虛擬子類
第二:register修飾符暗示編譯程序相應(yīng)的變量將被頻繁地使用,如果可能的話,應(yīng)將其zhi保存在CPU的寄存器中,以加快其存儲(chǔ)速度。這個(gè)關(guān)鍵字請(qǐng)求編譯器盡可能的將變量存在CPU內(nèi)部寄存器中而不是通過(guò)內(nèi)存尋址訪問(wèn)以提高效率。
而我們只是為了讓他包裝一下,讓其函數(shù)進(jìn)行回調(diào),和用于注冊(cè)程序退出時(shí)的回調(diào)函數(shù),然后在回調(diào)函數(shù)中做一些資源操作
附:
在TK中是不允許框架背景透明化,比如我剛開(kāi)始一直想讓text或者標(biāo)簽背景透明,這樣的話就會(huì)讓界面更加好看,試了幾種不同的方法,什么改背景色等等,但是都不可以,唯一可行的話就是麻煩一點(diǎn),利用PS處理,就是P出圖片,然后給標(biāo)簽或者文本框給予背景,但是相對(duì)于麻煩。
到此,關(guān)于“tkinter entry文本框如何限定輸入數(shù)字”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。