python 之GUI设计:Entry组件
說明:
Entry(輸入框) 組件通常用于獲取用戶的輸入文本。
使用條件:
Entry 組件在GUI界面的設計中主要用于單行文本的鍵入(實際鍵入的內容可以比顯示的空間更長,此種情況下結束鼠標和位移鍵能夠產看自己輸入的隱藏內容),通過幾何外觀圖形屬性設計可以改變實際的元素表現
如果你希望接收多行文本的輸入,可以使用 Text 組件(后面介紹)。
常見用法:
- 普通輸入框
作為輸入框最重要的屬性是輸入內容的獲取:
eg:
- 光標移動觸發事件
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(): # .........................數據存儲函數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("存儲任務完成")return Trueelse:print("等待下一輪存儲任務指令")e1.delete(0, "end")return Falsedef test():if len(e1.get()) > 4:print("正確!")return Trueelse:print("錯誤!")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) # 鼠標移走數據存儲 e1.pack(padx=180, pady=120) window.mainloop()- 與其他事件綁定使用
將 Entry 組件和 Button 組件配合,點擊 “獲取信息” 按鈕時自動清空輸入框并將內容輸出:
Entry常用選項定義
參考:https://blog.csdn.net/qq_38970783/article/details/88851045
經常用到的一些屬性:
- validate
說明:
1. 該選項設置是否啟用內容驗證
- validatecommand (同“ vcmd ”)
說明:
1. 該選項指定一個驗證函數,用于驗證輸入框內容是否合法
2. 驗證函數需要返回 True 或 False 表示驗證結果
3. 注意,該選項只有當 validate 的值非 “none” 時才有效 - textvariable
說明:
1. 指定一個與輸入框的內容相關聯的 Tkinter 變量**(通常是 StringVar)**
2. 當輸入框的內容發生改變時,該變量的值也會相應發生改變 - width
說明:
1. 設置輸入框的寬度,以字符為單位
2. 默認值是 20
3. 對于變寬字體來說,組件的實際寬度等于字體的平均寬度乘以 width 選項的值
方法
delete(first, last=None)
– 刪除參數 first 到 last 范圍內(包含 first 和 last)的所有內容
– 如果忽略 last 參數,表示刪除 first 參數指定的選項
– 使用 delete(0, END) 實現刪除輸入框的所有內容
get()
– 獲得當前輸入框的內容
icursor(index)
– 將光標移動到 index 參數指定的位置
– 這同時也會設置 INSERT 的值
index(index)
– 返回與 index 參數相應的選項的序號(例如 e.index(END))
insert(index, text)
– 將 text 參數的內容插入到 index 參數指定的位置
– 使用 insert(INSERT, text) 將 text 參數指定的字符串插入到光標的位置
– 使用 insert(END, text) 將 text 參數指定的字符串插入到輸入框的末尾
scan_dragto(x)
– 見下方 scan_mark(x)
scan_mark(x)
– 使用這種方式來實現輸入框內容的滾動
– 需要將鼠標按下事件綁定到 scan_mark(x) 方法(x 是鼠標當前的水平位置),然后再將 事件綁定到 scan_dragto(x) 方法(x 是鼠標當前的水平位置),就可以實現輸入框在當前位置和 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 參數所指定的字符
– 如果選中的范圍已經包含了該字符,那么什么事情也不會發生
– 如果選中的范圍不包含該字符,那么會從光標的位置將選中的范圍擴展至該字符
selection_clear()
– 取消選中狀態
selection_from(index)
– 開始一個新的選中范圍
– 會設置 ANCHOR 的值
selection_present()
– 返回輸入框是否有處于選中狀態的文本
– 如果有則返回 True,否則返回 False
selection_range(start, end)
– 設置選中范圍
– start 參數必須必 end 參數小
– 使用 selection_range(0, END) 選中整個輸入框的所有內容
selection_to(index)
– 選中 ANCHOR 到 index 參數的間的所有內容
xview(index)
– 該方法用于確保給定的 index 參數所指定的字符可見
– 如有必要,會滾動輸入框的內容
xview_moveto(fraction)
– 根據 fraction 參數給定的比率調整輸入框內容的可見范圍
– fraction 參數的范圍是 0.0 ~ 1.0,0.0 表示輸入框的開始位置,1.0 表示輸入框的結束位置
xview_scroll(number, what)
– 根據給定的參數水平滾動輸入框的可見范圍
– number 參數指定滾動的數量,如果是負數則表示反向滾動
– what 參數指定滾動的單位,可以是 UNITS 或 PAGES(UNITS 表示一個字符單元,PAGES 表示一頁)
關于驗證詳解
validatecommand 選項指定一個驗證函數,該函數只能返回 True 或 False 表示驗證的結果。一般情況下驗證函數只需要知道輸入框的內容即可,可以通過 Entry 組件的 get() 方法獲得該字符串。
將焦點轉移到第二個輸入框,validatecommand 指定的驗證函數被觸發并返回 False,接著 invalidcommand 被觸發
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的python 之GUI设计:Entry组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python Tkinter 常用控件空
- 下一篇: Python之web开发(五):WEB开