日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 之GUI设计:Entry组件

發布時間:2025/3/20 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 之GUI设计:Entry组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明:
Entry(輸入框) 組件通常用于獲取用戶的輸入文本。
使用條件:
Entry 組件在GUI界面的設計中主要用于單行文本的鍵入(實際鍵入的內容可以比顯示的空間更長,此種情況下結束鼠標和位移鍵能夠產看自己輸入的隱藏內容),通過幾何外觀圖形屬性設計可以改變實際的元素表現
如果你希望接收多行文本的輸入,可以使用 Text 組件(后面介紹)。
常見用法:

- 普通輸入框
作為輸入框最重要的屬性是輸入內容的獲取:
eg:

par1 = tk.StringVar()par1.set('xxxx')Entry(window, width=30, foreground='green', textvariable=par1).place(x=180, y=30)par1.get() # 獲取變量參數的鍵入內容

- 光標移動觸發事件

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 組件配合,點擊 “獲取信息” 按鈕時自動清空輸入框并將內容輸出:

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常用選項定義
參考:https://blog.csdn.net/qq_38970783/article/details/88851045
經常用到的一些屬性:

  • validate
    說明:
    1. 該選項設置是否啟用內容驗證
Entry(window, textvariable=v, validate="focusout", validatecommand=data_save)# 當鼠標移開觸發data_save函數
  • 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() 方法獲得該字符串。

import tkinter as tk master = tk.Tk()def test():vif len(v.get()) > 4:print("鍵入內容合法")return Trueelse:print("鍵入內容不合法")e1.delete(0, "end")return Falsedef test1():print("我被調用了......")return Truev = tk.StringVar() tk.Entry(master, textvariable=v, validate="focusout", validatecommand=test, invalidcommand=test1).pack(padx=10, pady=10) # 將焦點轉移到第二個輸入框,validatecommand 指定的驗證函數被觸發并返回 False,接著 invalidcommand 被觸發 master.mainloop()

將焦點轉移到第二個輸入框,validatecommand 指定的驗證函數被觸發并返回 False,接著 invalidcommand 被觸發

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的python 之GUI设计:Entry组件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。