亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Tkinter組件Entry的具體使用

 更新時(shí)間:2022年01月11日 14:16:03   作者:來(lái)自江南的你  
本文主要介紹了Tkinter組件Entry的具體使用,Entry組件通常用于獲取用戶的輸入文本,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Entry(輸入框)組件通常用于獲取用戶的輸入文本。

何時(shí)使用 Entry 組件?

Entry 組件僅允許用于輸入一行文本,如果用于輸入的字符串長(zhǎng)度比該組件可顯示空間更長(zhǎng),那內(nèi)容將被滾動(dòng)。這意味著該字符串將不能被全部看到(你可以用鼠標(biāo)或鍵盤(pán)的方向鍵調(diào)整文本的可見(jiàn)范圍)。

如果你希望接收多行文本的輸入,可以使用 Text 組件(后面介紹)。

用法

使用代碼為 Entry 組件添加文本,可以使用 insert() 方法。如果要替換當(dāng)前文本,可以先使用 delete() 方法,再使用 insert() 方法實(shí)現(xiàn):

import tkinter as tk
 
master = tk.Tk()
 
e = tk.Entry(master)
e.pack(padx=20, pady=20)
 
e.delete(0, "end")
e.insert(0, "默認(rèn)文本...")
 
master.mainloop()

獲取當(dāng)前輸入框的文本,可以使用 get() 方法:

s = e.get()

你也可以綁定 Entry 組件到 Tkinter 變量(StringVar),并通過(guò)該變量設(shè)置和獲取輸入框的文本:

v = tk.StringVar()
e = tk.Entry(master, textvariable=v)
e.pack()
 
v.set("I love Python!")
s = v.get()

下邊的例子演示將 Entry 組件和 Button 組件配合,點(diǎn)擊 “獲取信息” 按鈕時(shí)自動(dòng)清空輸入框并將內(nèi)容輸出:

import tkinter as tk
 
master = tk.Tk()
 
tk.Label(master, text="作品:").grid(row=0)
tk.Label(master, text="作者:").grid(row=1)
 
e1 = tk.Entry(master)
e2 = tk.Entry(master)
e1.grid(row=0, column=1, padx=10, pady=5)
e2.grid(row=1, column=1, padx=10, pady=5)
 
def show():
    print("作品:《%s》" % e1.get())
    print("作者:%s" % e2.get())
    e1.delete(0, "end")
    e2.delete(0, "end")
 
tk.Button(master, text="獲取信息", width=10, command=show).grid(row=3, column=0, sticky="w", padx=10, pady=5)
tk.Button(master, text="退出", width=10, command=master.quit).grid(row=3, column=1, sticky="e", padx=10, pady=5)
 
master.mainloop()

最后需要提到的是 Entry 組件允許通過(guò)以下幾種方式指定字符的位置:

數(shù)字索引號(hào)"anchoe""end""insert"鼠標(biāo)坐標(biāo)("@x")

數(shù)字索引號(hào):常規(guī)的 Python 索引號(hào),從 0 開(kāi)始

"anchor":對(duì)應(yīng)第一個(gè)被選中的字符(如果有的話)

"end":對(duì)應(yīng)已存在文本的后一個(gè)位置

"insert":對(duì)應(yīng)插入光標(biāo)的當(dāng)前位置

鼠標(biāo)坐標(biāo)("@x"):x 是鼠標(biāo)位置與 Entry 左側(cè)邊緣的水平距離,這樣就可以通過(guò)鼠標(biāo)相對(duì)地定位字符的位置

參數(shù)

Entry(master=None, **options) (class)

master -- 父組件

**options -- 組件選項(xiàng),下方表格詳細(xì)列舉了各個(gè)選項(xiàng)的具體含義和用法:

選項(xiàng)含義
background1. 設(shè)置 Entry 的背景顏色
2. 默認(rèn)值由系統(tǒng)指定
bg跟 background 一樣
borderwidth1. 設(shè)置 Entry 的邊框?qū)挾?br />2. 默認(rèn)值是 1 或 2 像素
bd跟 borderwidth 一樣
cursor1. 指定當(dāng)鼠標(biāo)在 Entry 上飄過(guò)的時(shí)候的鼠標(biāo)樣式
2. 默認(rèn)值由系統(tǒng)指定
exportselection1. 指定選中的文本是否可以被復(fù)制到剪貼板
2. 默認(rèn)值是 True
3. 可以修改為 False 表示不允許復(fù)制文本
font1. 指定 Entry 中文本的字體
2. 默認(rèn)值由系統(tǒng)指定
foreground1. 設(shè)置 Entry 的文本顏色
2. 默認(rèn)值由系統(tǒng)指定
fg跟 foreground 一樣
highlightbackground1. 指定當(dāng) Entry 沒(méi)有獲得焦點(diǎn)的時(shí)候高亮邊框的顏色
2. 默認(rèn)值由系統(tǒng)指定
highlightcolor1. 指定當(dāng) Entry 獲得焦點(diǎn)的時(shí)候高亮邊框的顏色
2. 默認(rèn)值由系統(tǒng)指定
highlightthickness1. 指定高亮邊框的寬度
2. 默認(rèn)值是 1 或 2 像素
insertbackground指定輸入光標(biāo)的顏色
insertborderwidth1. 指定輸入光標(biāo)的邊框?qū)挾?br />2. 如果被設(shè)置為非 0 值,光標(biāo)樣式會(huì)被設(shè)置為 RAISED
3. 小甲魚(yú)溫馨提示:將 insertwidth 設(shè)置大一點(diǎn)才能看到效果哦
insertofftime1. 該選項(xiàng)控制光標(biāo)的閃爍頻率(滅)
2. 單位是毫秒
insertontime1. 該選項(xiàng)控制光標(biāo)的閃爍頻率(亮)
2. 單位是毫秒
insertwidth1. 指定光標(biāo)的寬度
2. 默認(rèn)值是 1 或 2 像素
invalidcommand1. 指定當(dāng)輸入框輸入的內(nèi)容“非法”時(shí)調(diào)用的函數(shù)
2. 也就是指定當(dāng) validateCommand 選項(xiàng)指定的函數(shù)返回 False 時(shí)的函數(shù)
3. 詳見(jiàn)本內(nèi)容最下方小甲魚(yú)關(guān)于驗(yàn)證詳解
invcmd跟 invalidcommand 一樣
justify1. 定義如何對(duì)齊輸入框中的文本
2. 使用 "left","right" 或 "center"
3. 默認(rèn)值是 "left"
relief1. 指定邊框樣式
2. 默認(rèn)值是 "sunken"
3. 其他可以選擇的值是 "flat","raised","groove" 和 "ridge"
selectbackground1. 指定輸入框的文本被選中時(shí)的背景顏色
2. 默認(rèn)值由系統(tǒng)指定
selectborderwidth1. 指定輸入框的文本被選中時(shí)的邊框?qū)挾龋ㄟx中邊框)
2. 默認(rèn)值由系統(tǒng)指定
selectforeground1. 指定輸入框的文本被選中時(shí)的字體顏色
2. 默認(rèn)值由系統(tǒng)指定
show1. 設(shè)置輸入框如何顯示文本的內(nèi)容
2. 如果該值非空,則輸入框會(huì)顯示指定字符串代替真正的內(nèi)容
3. 將該選項(xiàng)設(shè)置為 "*",則是密碼輸入框
state1. Entry 組件可以設(shè)置的狀態(tài):"normal","disabled" 或 "readonly"(注意,它跟 "disabled" 相似,但它支持選中和拷貝,只是不能修改,而 "disabled" 是完全禁止)
2. 默認(rèn)值是 "normal"
3. 注意,如果此選項(xiàng)設(shè)置為 "disabled" 或 "readonly",那么調(diào)用 insert() 和 delete() 方法都會(huì)被忽略
takefocus1. 指定使用 Tab 鍵可以將焦點(diǎn)移動(dòng)到輸入框中
2. 默認(rèn)是開(kāi)啟的,可以將該選項(xiàng)設(shè)置為 False 避免焦點(diǎn)在此輸入框中
textvariable1. 指定一個(gè)與輸入框的內(nèi)容相關(guān)聯(lián)的 Tkinter 變量(通常是 StringVar)
2. 當(dāng)輸入框的內(nèi)容發(fā)生改變時(shí),該變量的值也會(huì)相應(yīng)發(fā)生改變
validate1. 該選項(xiàng)設(shè)置是否啟用內(nèi)容驗(yàn)證
2. 詳見(jiàn)本內(nèi)容最下方小甲魚(yú)關(guān)于驗(yàn)證詳解
validatecommand1. 該選項(xiàng)指定一個(gè)驗(yàn)證函數(shù),用于驗(yàn)證輸入框內(nèi)容是否合法
2. 驗(yàn)證函數(shù)需要返回 True 或 False 表示驗(yàn)證結(jié)果
3. 注意,該選項(xiàng)只有當(dāng) validate 的值非 "none" 時(shí)才有效
3. 詳見(jiàn)本內(nèi)容最下方小甲魚(yú)關(guān)于驗(yàn)證詳解
vcmd跟 validatecommand 一樣
width1. 設(shè)置輸入框的寬度,以字符為單位
2. 默認(rèn)值是 20
3. 對(duì)于變寬字體來(lái)說(shuō),組件的實(shí)際寬度等于字體的平均寬度乘以 width 選項(xiàng)的值
xscrollcommand1. 與 scrollbar(滾動(dòng)條)組件相關(guān)聯(lián)
2. 如果你覺(jué)得用戶輸入的內(nèi)容會(huì)超過(guò)該組件的輸入框?qū)挾龋敲纯梢钥紤]設(shè)置該選項(xiàng)
3. 使用方法可以參考:Scrollbar 組件

方法

delete(first, last=None) 

-- 刪除參數(shù) first 到 last 范圍內(nèi)(包含 first 和 last)的所有內(nèi)容
-- 如果忽略 last 參數(shù),表示刪除 first 參數(shù)指定的選項(xiàng)
-- 使用 delete(0, END) 實(shí)現(xiàn)刪除輸入框的所有內(nèi)容

get()

-- 獲得當(dāng)前輸入框的內(nèi)容

icursor(index)

-- 將光標(biāo)移動(dòng)到 index 參數(shù)指定的位置
-- 這同時(shí)也會(huì)設(shè)置 INSERT 的值

index(index) 

-- 返回與 index 參數(shù)相應(yīng)的選項(xiàng)的序號(hào)(例如 e.index(END))

insert(index, text) 

-- 將 text 參數(shù)的內(nèi)容插入到 index 參數(shù)指定的位置
-- 使用 insert(INSERT, text) 將 text 參數(shù)指定的字符串插入到光標(biāo)的位置
-- 使用 insert(END, text) 將 text 參數(shù)指定的字符串插入到輸入框的末尾

scan_dragto(x) 

--  見(jiàn)下方 scan_mark(x)

scan_mark(x)

-- 使用這種方式來(lái)實(shí)現(xiàn)輸入框內(nèi)容的滾動(dòng)
-- 需要將鼠標(biāo)按下事件綁定到 scan_mark(x) 方法(x 是鼠標(biāo)當(dāng)前的水平位置),然后再將 <motion> 事件綁定到 scan_dragto(x) 方法(x 是鼠標(biāo)當(dāng)前的水平位置),就可以實(shí)現(xiàn)輸入框在當(dāng)前位置和 sacn_mack(x) 指定位置之間的水平滾動(dòng)

select_adjust(index)
-- 與 selection_adjust(index) 相同,見(jiàn)下方解釋

select_clear()
-- 與 selection_clear() 相同,見(jiàn)下方解釋

select_from(index)
-- 與 selection_from(index) 相同,見(jiàn)下方解釋

select_present()
-- 與 selection_present() 相同,見(jiàn)下方解釋

select_range(start, end)
-- 與 selection_range(start, end) 相同,見(jiàn)下方解釋

select_to(index)
-- 與 selection_to(index) 相同,見(jiàn)下方解釋

selection_adjust(index)
-- 該方法是為了確保輸入框中選中的范圍包含 index 參數(shù)所指定的字符
-- 如果選中的范圍已經(jīng)包含了該字符,那么什么事情也不會(huì)發(fā)生
-- 如果選中的范圍不包含該字符,那么會(huì)從光標(biāo)的位置將選中的范圍擴(kuò)展至該字符

selection_clear()
-- 取消選中狀態(tài)

selection_from(index)
-- 開(kāi)始一個(gè)新的選中范圍
-- 會(huì)設(shè)置 ANCHOR 的值

selection_present()
-- 返回輸入框是否有處于選中狀態(tài)的文本
-- 如果有則返回 True,否則返回 False

selection_range(start, end)
-- 設(shè)置選中范圍
-- start 參數(shù)必須必 end 參數(shù)小
-- 使用 selection_range(0, END) 選中整個(gè)輸入框的所有內(nèi)容

selection_to(index)
-- 選中 ANCHOR 到 index 參數(shù)的間的所有內(nèi)容

xview(index)
-- 該方法用于確保給定的 index 參數(shù)所指定的字符可見(jiàn)
-- 如有必要,會(huì)滾動(dòng)輸入框的內(nèi)容

xview_moveto(fraction)
-- 根據(jù) fraction 參數(shù)給定的比率調(diào)整輸入框內(nèi)容的可見(jiàn)范圍
-- fraction 參數(shù)的范圍是 0.0 ~ 1.0,0.0 表示輸入框的開(kāi)始位置,1.0 表示輸入框的結(jié)束位置

xview_scroll(number, what)
-- 根據(jù)給定的參數(shù)水平滾動(dòng)輸入框的可見(jiàn)范圍
-- number 參數(shù)指定滾動(dòng)的數(shù)量,如果是負(fù)數(shù)則表示反向滾動(dòng)
-- what 參數(shù)指定滾動(dòng)的單位,可以是 UNITS 或 PAGES(UNITS 表示一個(gè)字符單元,PAGES 表示一頁(yè))

關(guān)于驗(yàn)證詳解

由于查看了不少資料,很多在這里都沒(méi)有解釋清楚,所以這里單獨(dú)列出來(lái)詳細(xì)講解下。

Entry 組件是支持驗(yàn)證輸入內(nèi)容的合法性的,比如要求輸入數(shù)字,你輸入了字母那就是非法。實(shí)現(xiàn)該功能,需要通過(guò)設(shè)置 validate、validatecommand 和 invalidcommand 選項(xiàng)。

首先啟用驗(yàn)證的“開(kāi)關(guān)”是 validate 選項(xiàng),該選項(xiàng)可以設(shè)置的值有:

含義
'focus'當(dāng) Entry 組件獲得或失去焦點(diǎn)的時(shí)候驗(yàn)證
'focusin'當(dāng) Entry 組件獲得焦點(diǎn)的時(shí)候驗(yàn)證
'focusout'當(dāng) Entry 組件失去焦點(diǎn)的時(shí)候驗(yàn)證
'key'當(dāng)輸入框被編輯的時(shí)候驗(yàn)證
'all'當(dāng)出現(xiàn)上邊任何一種情況的時(shí)候驗(yàn)證
'none'1. 關(guān)閉驗(yàn)證功能
2. 默認(rèn)設(shè)置該選項(xiàng)(即不啟用驗(yàn)證)
3. 注意,是字符串的 'none',而非 None

其次是為 validatecommand 選項(xiàng)指定一個(gè)驗(yàn)證函數(shù),該函數(shù)只能返回 True 或 False 表示驗(yàn)證的結(jié)果。一般情況下驗(yàn)證函數(shù)只需要知道輸入框的內(nèi)容即可,可以通過(guò) Entry 組件的 get() 方法獲得該字符串。

下邊的例子中,在第一個(gè)輸入框輸入“CSDN” 并通過(guò) Tab 鍵或者鼠標(biāo)將焦點(diǎn)轉(zhuǎn)移到第二個(gè)輸入框的時(shí)候,驗(yàn)證功能被成功觸發(fā):

import tkinter as tk
 
master = tk.Tk()
 
def test():
    if e1.get() == "CSDN":
        print("正確!")
        return True
    else:
        print("錯(cuò)誤!")
        e1.delete(0, "end")
        return False
 
v = tk.StringVar()
 
e1 = tk.Entry(master, textvariable=v, validate="focusout", validatecommand=test)
e2 = tk.Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
 
master.mainloop()

然后,invalidcommand 選項(xiàng)指定的函數(shù)只有在 validatecommand 的返回值為 False 的時(shí)候才被調(diào)用。

下邊的例子中,在第一個(gè)輸入框輸入“csdn”,并通過(guò) Tab 鍵將焦點(diǎn)轉(zhuǎn)移到第二個(gè)輸入框,validatecommand 指定的驗(yàn)證函數(shù)被觸發(fā)并返回 False,接著 invalidcommand 被觸發(fā):

import tkinter as tk
 
master = tk.Tk()
 
def test():
    if e1.get() == "CSDN":
        print("正確!")
        return True
    else:
        print("錯(cuò)誤!")
        e1.delete(0, "end")
        return False
 
def test2():
    print("我被調(diào)用了......")
    return True
 
v = tk.StringVar()
 
e1 = tk.Entry(master, textvariable=v, validate="focusout", validatecommand=test, invalidcommand=test2)
e2 = tk.Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
 
master.mainloop()

最后,其實(shí) Tkinter 還有隱藏技能,不過(guò)需要冷卻才能觸發(fā),請(qǐng)聽(tīng)我一一道來(lái)......

Tkinter 為驗(yàn)證函數(shù)提供一些額外的選項(xiàng):

額外選項(xiàng)含義
'%d'操作代碼:0 表示刪除操作;1 表示插入操作;2 表示獲得、失去焦點(diǎn)或 textvariable 變量的值被修改
'%i'1. 當(dāng)用戶嘗試插入或刪除操作的時(shí)候,該選線表示插入或刪除的位置(索引號(hào))
2. 如果是由于獲得、失去焦點(diǎn)或 textvariable 變量的值被修改而調(diào)用驗(yàn)證函數(shù),那么該值是 -1
'%P'1. 當(dāng)輸入框的值允許改變的時(shí)候,該值有效
2. 該值為輸入框的最新文本內(nèi)容
'%s'該值為調(diào)用驗(yàn)證函數(shù)前輸入框的文本內(nèi)容
'%S'1. 當(dāng)插入或刪除操作觸發(fā)驗(yàn)證函數(shù)的時(shí)候,該值有效
2. 該選項(xiàng)表示文本被插入和刪除的內(nèi)容
'%v'該組件當(dāng)前的 validate 選項(xiàng)的值
'%V'1. 調(diào)用驗(yàn)證函數(shù)的原因
2. 該值是 'focusin','focusout','key' 或 'forced'(textvariable 選項(xiàng)指定的變量值被修改)中的一個(gè)
'%W'該組件的名字

為了使用這些選項(xiàng),你可以這樣寫(xiě):validatecommand=(f, s1, s2, ...)

其中,f 就是你“冷卻后”的驗(yàn)證函數(shù)名,s1、s2、s3 這些是額外的選項(xiàng),這些選項(xiàng)會(huì)作為參數(shù)依次傳給 f 函數(shù)。我們剛剛說(shuō)了,使用隱藏技能前需要冷卻,其實(shí)就是調(diào)用 register() 方法將驗(yàn)證函數(shù)包裝起來(lái):

import tkinter as tk
 
master = tk.Tk()
 
v = tk.StringVar()
 
def test(content, reason, name):
    if content == "CSDN":
        print("正確!")
        print(content, reason, name)
        return True
    else:
        print("錯(cuò)誤!")
        print(content, reason, name)
        return False
 
testCMD = master.register(test)
e1 = tk.Entry(master, textvariable=v, validate="focusout", validatecommand=(testCMD, '%P', '%v', '%W'))
e2 = tk.Entry(master)
e1.pack(padx=10, pady=10)
e2.pack(padx=10, pady=10)
 
master.mainloop()

當(dāng)我故意輸入“CSDN我愛(ài)你”的時(shí)候,DUANG的一下,是錯(cuò)誤的,后來(lái)我果斷刪除了“我愛(ài)你”,嘿,又正確了:

 到此這篇關(guān)于Tkinter組件Entry的具體使用的文章就介紹到這了,更多相關(guān)Tkinter Entry內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • matplotlib實(shí)現(xiàn)矩陣和圖像的可視化表示

    matplotlib實(shí)現(xiàn)矩陣和圖像的可視化表示

    這篇文章主要為大家詳細(xì)介紹了如何利用matplotlib實(shí)現(xiàn)矩陣和圖像的可視化表示,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下
    2024-03-03
  • Python基于Opencv來(lái)快速實(shí)現(xiàn)人臉識(shí)別過(guò)程詳解(完整版)

    Python基于Opencv來(lái)快速實(shí)現(xiàn)人臉識(shí)別過(guò)程詳解(完整版)

    這篇文章主要介紹了Python基于Opencv來(lái)快速實(shí)現(xiàn)人臉識(shí)別過(guò)程詳解(完整版)隨著人工智能的日益火熱,計(jì)算機(jī)視覺(jué)領(lǐng)域發(fā)展迅速,今天就為大家?guī)?lái)最基礎(chǔ)的人臉識(shí)別基礎(chǔ),從一個(gè)個(gè)函數(shù)開(kāi)始走進(jìn)這個(gè)奧妙的世界,需要的朋友可以參考下
    2019-07-07
  • 利用python獲取想要搜索的數(shù)據(jù)

    利用python獲取想要搜索的數(shù)據(jù)

    這篇文章主要介紹了利用Python爬蟲(chóng)采集想要搜索的信息(利用某du的接口實(shí)現(xiàn))并且處理掉它的反爬手段,文中示例代碼很詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴快來(lái)一起學(xué)習(xí)吧
    2023-05-05
  • 在Python中使用模塊的教程

    在Python中使用模塊的教程

    這篇文章主要介紹了在Python中使用模塊的教程,示例代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • python3實(shí)現(xiàn)域名查詢和whois查詢功能

    python3實(shí)現(xiàn)域名查詢和whois查詢功能

    本篇文章給大家分享了python3實(shí)現(xiàn)域名查詢和whois查詢功能的詳細(xì)代碼,有需要的朋友參考學(xué)習(xí)下。
    2018-06-06
  • VSCODE配置Markdown及Markdown基礎(chǔ)語(yǔ)法詳解

    VSCODE配置Markdown及Markdown基礎(chǔ)語(yǔ)法詳解

    這篇文章主要介紹了VSCODE配置Markdown及Markdown基礎(chǔ)語(yǔ)法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • python使用Matplotlib畫(huà)條形圖

    python使用Matplotlib畫(huà)條形圖

    這篇文章主要為大家詳細(xì)介紹了python使用Matplotlib畫(huà)條形圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python 對(duì)Excel求和、合并居中的操作

    Python 對(duì)Excel求和、合并居中的操作

    這篇文章主要介紹了Python 對(duì)Excel求和、合并居中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • python爬蟲(chóng)之自制英漢字典

    python爬蟲(chóng)之自制英漢字典

    這篇文章主要為大家詳細(xì)介紹了python爬蟲(chóng)之自制英漢字典的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python pass 語(yǔ)句使用示例

    Python pass 語(yǔ)句使用示例

    這篇文章主要介紹了Python pass 語(yǔ)句的使用方法示例,需要的朋友可以參考下
    2014-03-03

最新評(píng)論