文章目錄
Entry簡介
所謂的文本框Entry
,通常是指單行的文本框,在GUI程序設計中,這是用於輸入的最基本控件,我們可以使用它輸入單行字符串,如果所輸入的字符串長度大於文本框的寬度,所輸入的文字會自動隱藏,造成部分內容無法顯示,碰到這種狀況時可以使用箭頭鍵移動鼠標光標到看不到的區域。
文本框限定的是單行文字,如果想要處理多行文字,需要使用控件中的text
它的語法格式:
Entry(父對象, options, ...)
- 第一個參數:
父對象
,表示這個文本框將建立在哪一個窗口內 - 第二個參數:
options
,參數如下
參數 | 含義 |
---|---|
borderwidth | 邊界寬度 默認是兩個像素 |
bd | 邊界寬度 默認是兩個像素 |
background | 背景色彩 |
bg | 背景色彩 |
command | 當用戶更改內容時,會自動執行此函數 |
cursor | 當鼠標光標移至按鈕上時的形狀 |
exportselection | 如果執行選取時,所選取的字符串會自動輸出至剪貼板 如果想要避免,可以設置exportselection=0 |
foreground | 前景色彩 |
fg | 前景色彩 |
font | 字形 |
height | 高,單位是字符高 |
highlightbackground | 當功能按鈕獲取焦點時的背景顏色 |
highlightcolor | 當工人按鈕取得焦點時的顏色 |
justify | 當有多行文字時,最後一行文字的對齊方式 |
relief | 可由此控制文字外框 默認是relief=FLAT |
selectbackground | 被選取字符串的背景色彩 |
selectborderwidth | 選取字符串時的邊界寬度 預設是1 |
selectfroeground | 被選取字符串的前景色彩 |
show | 顯示輸入字符 例如,show=’*'表示顯示星號,常用於輸入密碼字段 |
state | 輸入狀態 默認是NORMAL表示可以輸入,DISABLE則表示無法輸入 |
textvariable | 文字變量 |
width | 寬,單位是字符寬 |
xscrollcommand | 在X軸使用滾動條 |
Entry的基本應用
例子
:建立標籤和文本框,輸入姓名和地址
import tkinter
root = tkinter.Tk()
label1 = tkinter.Label(root, text="姓名 :")
label2 = tkinter.Label(root, text="住址 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root)
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
root.mainloop()
運行結果:
設置grid(row=0)
,在沒有設置column=x
的情況下,系統自動設置column=0
使用show 參數隱藏輸入的字符
其實Entry控件具有可以使用show參數設置隱藏輸入字符的特性,所以也常被應用在用於輸入密碼的時候
例子
:密碼的輸入,用*
隱藏
import tkinter
root = tkinter.Tk()
label1 = tkinter.Label(root, text="賬號 :")
label2 = tkinter.Label(root, text="密碼 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
root.mainloop()
運行結果:
Entry 的 get 方法
Entry
有一個get()
方法,可以利用這個方法來獲取目前Entry 的字符串內容
import tkinter
def getValue():
print("賬號爲{}, 密碼爲{}".format(entry1.get(), entry2.get()))
root = tkinter.Tk()
label1 = tkinter.Label(root, text="賬號 :")
label2 = tkinter.Label(root, text="密碼 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
buttonLogin = tkinter.Button(root, text="登錄", command=getValue)
buttonExit = tkinter.Button(root, text="退出", command=root.quit)
buttonLogin.grid(row=2, column=0, sticky=tkinter.W, padx=20)
buttonExit.grid(row=2, column=1)
root.mainloop()
運行結果:
我們輸入賬號密碼,點擊登錄
賬號爲123456, 密碼爲132456
控制檯就出現了我們所需要的的信息
Entry 的 insert() 方法
在設計GUI程序時,常常需要在建立Entry
的文本框內默認建立輸入文字,在Widget
控件中可以使用insert(index, s)
方法插入字符串
其中s
是所插入的字符串,字符串會插在index
位置
例子
:建立默認文字內容
import tkinter
def getValue():
print("賬號爲{}, 密碼爲{}".format(entry1.get(), entry2.get()))
root = tkinter.Tk()
label1 = tkinter.Label(root, text="賬號 :")
label2 = tkinter.Label(root, text="密碼 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
# 默認賬號內容
entry1.insert(0, "123456")
# 默認密碼內容
entry2.insert(0, "123456")
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
buttonLogin = tkinter.Button(root, text="登錄", command=getValue)
buttonExit = tkinter.Button(root, text="退出", command=root.quit)
buttonLogin.grid(row=2, column=0, sticky=tkinter.W, padx=20)
buttonExit.grid(row=2, column=1)
root.mainloop()
運行結果:
Entry 的 delete() 方法
在tkinter
模塊的應用中可以使用delete(first, last=None)
方法刪除Entry內的從第first
字符到last-1
字符間的字符串,如果要刪除整個字符串可以使用delete(0, END)
如果刪除倒數第一個,我們可以用len()方法判斷長度,然後長度減一就行
例子
:單擊刪除按鈕清空文本框內容
import tkinter
def getValue():
print("賬號爲{}, 密碼爲{}".format(entry1.get(), entry2.get()))
# 刪除的方法
def deleteValue():
entry1.delete(0, tkinter.END)
entry2.delete(0, tkinter.END)
root = tkinter.Tk()
label1 = tkinter.Label(root, text="賬號 :")
label2 = tkinter.Label(root, text="密碼 :")
label1.grid(row=0)
label2.grid(row=1)
entry1 = tkinter.Entry(root)
entry2 = tkinter.Entry(root, show="*")
# 默認賬號內容
entry1.insert(0, "123456")
# 默認密碼內容
entry2.insert(0, "123456")
entry1.grid(row=0, column=1)
entry2.grid(row=1, column=1)
buttonLogin = tkinter.Button(root, text="登錄", command=getValue)
# 調用刪除的方法
buttonExit = tkinter.Button(root, text="刪除", command=deleteValue)
buttonLogin.grid(row=2, column=0, sticky=tkinter.W, padx=20)
buttonExit.grid(row=2, column=1)
root.mainloop()
運行結果:
例子
:刪除最後一個
def deleteValue():
len_entry = len(entry1.get())
entry1.delete(len_entry - 1)
entry2.delete(0, tkinter.END)
運行結果:
如果只有一個參數的話,那這個參數將是first
,如不是last
,len_entry - 1
相當於是從到底第一個開始刪除,一直到末尾
計算數學表達式使用 eval()
Python
有一個非常好用的計算數學表達式的函數eval
該函數可以直接傳回
此數學表達式的計算結果
,它的語法格式:
"""expression爲字符串"""
result = eval(expression)
例子
:
import tkinter
def getValue():
try:
value = eval(entry.get())
label2.configure(text="計算結果爲:" + str(value))
except:
pass
root = tkinter.Tk()
label = tkinter.Label(root, text="請輸入數學表達式:")
label.pack(anchor=tkinter.W)
entry = tkinter.Entry(root)
entry.pack(pady=5)
label2 = tkinter.Label(root)
label2.pack()
button = tkinter.Button(root, text="計算", command=getValue)
button.pack(pady=5)
root.mainloop()
運行結果:
謝謝觀看,筆者會持續更新,如有錯誤或者建議,請私信我