python 之GUI设计:Entry组件
說明:
Entry(輸入框) 組件通常用于獲取用戶的輸入文本。
使用條件:
Entry 組件在GUI界面的設(shè)計(jì)中主要用于單行文本的鍵入(實(shí)際鍵入的內(nèi)容可以比顯示的空間更長,此種情況下結(jié)束鼠標(biāo)和位移鍵能夠產(chǎn)看自己輸入的隱藏內(nèi)容),通過幾何外觀圖形屬性設(shè)計(jì)可以改變實(shí)際的元素表現(xiàn)
如果你希望接收多行文本的輸入,可以使用 Text 組件(后面介紹)。
常見用法:
- 普通輸入框
作為輸入框最重要的屬性是輸入內(nèi)容的獲取:
eg:
- 光標(biāo)移動(dòng)觸發(fā)事件
from tkinter import * import pyodbc import tkinter as tkwindow = tk.Tk() window.geometry('600x400')connect = pyodbc.connect(r'DRIVER={SQL Server Native Client 10.0};'r''r'SERVER=(local);'r''r'DATABASE=DBtest;UID=sa;PWD=726803') cursor = connect.cursor()def data_save(): # .........................數(shù)據(jù)存儲(chǔ)函數(shù)print("the lengh is :", len(str(e1.get())))if len(str(e1.get())) > 0:Production_mode = par.get()Equipment_no = par1.get()Date = par2.get()sql1 = "INSERT INTO display_board (Production_mode, Equipment_no, Date ) VALUES ('%s', '%s', '%s')" % (Production_mode, Equipment_no, Date)print("Pro_mode_entry_night\n, Pro_equ_no\n, Date\n", Production_mode, Equipment_no, Date)cursor.execute(sql1)connect.commit()print("存儲(chǔ)任務(wù)完成")return Trueelse:print("等待下一輪存儲(chǔ)任務(wù)指令")e1.delete(0, "end")return Falsedef test():if len(e1.get()) > 4:print("正確!")return Trueelse:print("錯(cuò)誤!")print("the lengh is :", len(e1.get()))e1.delete(0, "end")return Falsev = tk.StringVar() par = tk.StringVar() par1 = tk.StringVar() par2 = tk.StringVar() for i in range(0, 3):if i == 0:par.set('')Entry(window, width=30, foreground='green', textvariable=par).place(x=180, y=30)elif i == 1:par1.set('')Entry(window, width=30, foreground='green', textvariable=par1).place(x=180, y=60)else:par2.set('')Entry(window, width=30, foreground='green', textvariable=par2).place(x=180, y=90) e1 = tk.Entry(window, textvariable=v, validate="focusout", validatecommand=data_save) # 鼠標(biāo)移走數(shù)據(jù)存儲(chǔ) e1.pack(padx=180, pady=120) window.mainloop()- 與其他事件綁定使用
將 Entry 組件和 Button 組件配合,點(diǎn)擊 “獲取信息” 按鈕時(shí)自動(dòng)清空輸入框并將內(nèi)容輸出:
Entry常用選項(xiàng)定義
參考:https://blog.csdn.net/qq_38970783/article/details/88851045
經(jīng)常用到的一些屬性:
- validate
說明:
1. 該選項(xiàng)設(shè)置是否啟用內(nèi)容驗(yàn)證
- validatecommand (同“ vcmd ”)
說明:
1. 該選項(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í)才有效 - textvariable
說明:
1. 指定一個(gè)與輸入框的內(nèi)容相關(guān)聯(lián)的 Tkinter 變量**(通常是 StringVar)**
2. 當(dāng)輸入框的內(nèi)容發(fā)生改變時(shí),該變量的值也會(huì)相應(yīng)發(fā)生改變 - width
說明:
1. 設(shè)置輸入框的寬度,以字符為單位
2. 默認(rèn)值是 20
3. 對于變寬字體來說,組件的實(shí)際寬度等于字體的平均寬度乘以 width 選項(xiàng)的值
方法
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)
– 見下方 scan_mark(x)
scan_mark(x)
– 使用這種方式來實(shí)現(xiàn)輸入框內(nèi)容的滾動(dòng)
– 需要將鼠標(biāo)按下事件綁定到 scan_mark(x) 方法(x 是鼠標(biāo)當(dāng)前的水平位置),然后再將 事件綁定到 scan_dragto(x) 方法(x 是鼠標(biāo)當(dāng)前的水平位置),就可以實(shí)現(xiàn)輸入框在當(dāng)前位置和 sacn_mack(x) 指定位置之間的水平滾動(dòng)
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)包含了該字符,那么什么事情也不會(huì)發(fā)生
– 如果選中的范圍不包含該字符,那么會(huì)從光標(biāo)的位置將選中的范圍擴(kuò)展至該字符
selection_clear()
– 取消選中狀態(tài)
selection_from(index)
– 開始一個(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ù)所指定的字符可見
– 如有必要,會(huì)滾動(dòng)輸入框的內(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ù)水平滾動(dòng)輸入框的可見范圍
– number 參數(shù)指定滾動(dòng)的數(shù)量,如果是負(fù)數(shù)則表示反向滾動(dòng)
– what 參數(shù)指定滾動(dòng)的單位,可以是 UNITS 或 PAGES(UNITS 表示一個(gè)字符單元,PAGES 表示一頁)
關(guān)于驗(yàn)證詳解
validatecommand 選項(xiàng)指定一個(gè)驗(yàn)證函數(shù),該函數(shù)只能返回 True 或 False 表示驗(yàn)證的結(jié)果。一般情況下驗(yàn)證函數(shù)只需要知道輸入框的內(nèi)容即可,可以通過 Entry 組件的 get() 方法獲得該字符串。
將焦點(diǎn)轉(zhuǎn)移到第二個(gè)輸入框,validatecommand 指定的驗(yàn)證函數(shù)被觸發(fā)并返回 False,接著 invalidcommand 被觸發(fā)
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的python 之GUI设计:Entry组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Tkinter 常用控件空
- 下一篇: Python之web开发(五):WEB开