最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Tkinter組件Entry的具體使用

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

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

何時使用 Entry 組件?

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

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

用法

使用代碼為 Entry 組件添加文本,可以使用 insert() 方法。如果要替換當前文本,可以先使用 delete() 方法,再使用 insert() 方法實現(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, "默認文本...")
 
master.mainloop()

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

s = e.get()

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

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

下邊的例子演示將 Entry 組件和 Button 組件配合,點擊 “獲取信息” 按鈕時自動清空輸入框并將內(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 組件允許通過以下幾種方式指定字符的位置:

數(shù)字索引號"anchoe""end""insert"鼠標坐標("@x")

數(shù)字索引號:常規(guī)的 Python 索引號,從 0 開始

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

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

"insert":對應(yīng)插入光標的當前位置

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

參數(shù)

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

master -- 父組件

**options -- 組件選項,下方表格詳細列舉了各個選項的具體含義和用法:

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

方法

delete(first, last=None) 

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

get()

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

icursor(index)

-- 將光標移動到 index 參數(shù)指定的位置
-- 這同時也會設(shè)置 INSERT 的值

index(index) 

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

insert(index, text) 

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

scan_dragto(x) 

--  見下方 scan_mark(x)

scan_mark(x)

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

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

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

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

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

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

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

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

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

selection_from(index)
-- 開始一個新的選中范圍
-- 會設(shè)置 ANCHOR 的值

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

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

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

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

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

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

關(guān)于驗證詳解

由于查看了不少資料,很多在這里都沒有解釋清楚,所以這里單獨列出來詳細講解下。

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

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

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

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

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

import tkinter as tk
 
master = tk.Tk()
 
def test():
    if e1.get() == "CSDN":
        print("正確!")
        return True
    else:
        print("錯誤!")
        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 選項指定的函數(shù)只有在 validatecommand 的返回值為 False 的時候才被調(diào)用。

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

import tkinter as tk
 
master = tk.Tk()
 
def test():
    if e1.get() == "CSDN":
        print("正確!")
        return True
    else:
        print("錯誤!")
        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()

最后,其實 Tkinter 還有隱藏技能,不過需要冷卻才能觸發(fā),請聽我一一道來......

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

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

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

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

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("錯誤!")
        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()

當我故意輸入“CSDN我愛你”的時候,DUANG的一下,是錯誤的,后來我果斷刪除了“我愛你”,嘿,又正確了:

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

相關(guān)文章

  • Python中元組的概念及應(yīng)用小結(jié)

    Python中元組的概念及應(yīng)用小結(jié)

    Python中的元組和列表很相似,元組也是Python語言提供的內(nèi)置數(shù)據(jù)結(jié)構(gòu)之一,可以在代碼中直接使用,這篇文章主要介紹了Python中元組的概念以及應(yīng)用,需要的朋友可以參考下
    2023-01-01
  • Python2與Python3的區(qū)別詳解

    Python2與Python3的區(qū)別詳解

    這篇文章主要介紹了Python2與Python3的區(qū)別詳解,需要的朋友可以參考下
    2020-02-02
  • Python中條件語句、循環(huán)語句和pass語句的使用示例

    Python中條件語句、循環(huán)語句和pass語句的使用示例

    Python條件語句是通過一條或多條語句的執(zhí)行結(jié)果(True或者False)來決定執(zhí)行的代碼塊,下面這篇文章主要給大家介紹了關(guān)于Python中條件語句、循環(huán)語句和pass語句使用的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python中關(guān)于Sequence切片的下標問題詳解

    Python中關(guān)于Sequence切片的下標問題詳解

    這篇文章主要給大家介紹了Python中關(guān)于Sequence切片下標問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習價值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • python判斷字符串是否包含子字符串的方法

    python判斷字符串是否包含子字符串的方法

    這篇文章主要介紹了python判斷字符串是否包含子字符串的方法,實例分析了Python中的in與find方法來實現(xiàn)這一功能,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • Python matplotlib以日期為x軸作圖代碼實例

    Python matplotlib以日期為x軸作圖代碼實例

    這篇文章主要介紹了Python matplotlib以日期為x軸作圖代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2019-11-11
  • 一篇文章帶你了解python字典基礎(chǔ)

    一篇文章帶你了解python字典基礎(chǔ)

    這篇文章主要介紹了Python字典及字典基本操作方法,結(jié)合實例形式詳細分析了Python字典的概念、創(chuàng)建、格式化及常用操作方法與相關(guān)注意事項,需要的朋友可以參考下
    2021-08-08
  • python pywinauto使用過程及問題小結(jié)

    python pywinauto使用過程及問題小結(jié)

    在pywinauto庫中,uia即UIAutomation,是微軟提供的用于用戶界面自動化測試和輔助功能訪問的技術(shù)框架,UIAutomation支持自動化腳本與各種UI元素交互,本文給大家介紹python pywinauto使用過程及問題小結(jié),感興趣的朋友一起看看吧
    2024-10-10
  • Python連接和操作Elasticsearch的詳細指南

    Python連接和操作Elasticsearch的詳細指南

    Elasticsearch 是一個強大的搜索引擎,廣泛應(yīng)用于數(shù)據(jù)存儲和搜索場景,通過 Python,我們可以方便地與 Elasticsearch 進行交互,本文將詳細介紹如何在本地使用 Python 連接到服務(wù)器上的 Elasticsearch,并進行基本的操作,需要的朋友可以參考下
    2024-12-12
  • Python之web模板應(yīng)用

    Python之web模板應(yīng)用

    這篇文章主要介紹了Python之web模板應(yīng)用,web模板可以更加靈活和方便的控制HTML的顯示,非常具有實用價值,有需要的小伙伴可以參考下
    2017-12-12

最新評論

上思县| 府谷县| 怀宁县| 方正县| 清水河县| 石城县| 麟游县| 祁东县| 朝阳县| 台东市| 登封市| 潢川县| 蕉岭县| 建德市| 新乐市| 平塘县| 镶黄旗| 邵东县| 南木林县| 页游| 安吉县| 长葛市| 招远市| 利辛县| 怀化市| 邛崃市| 棋牌| 盐津县| 清水县| 龙川县| 周宁县| 麦盖提县| 运城市| 浙江省| 肃北| 大埔区| 保山市| 永仁县| 岫岩| 仪陇县| 光山县|