本篇 ShengYu 介紹 Python tkinter Entry 文字輸入框用法與範例,Python GUI 程式設計裡文字輸入框的處理是很基本且常用的功能,接下來就來學習怎麼用 tkinter 建立 Entry 吧!
以下的 Python tkinter Entry 用法與範例將分為這幾部分,
- tkinter Entry 基本用法
- tkinter Entry 基本參數
- tkinter 取得 Entry 的輸入文字
- tkinter Entry 限制輸入框只能輸入數字
- tkinter Entry 使用
show='*'
隱藏輸入密碼
tkinter Entry 基本用法
這邊示範 tkinter Entry 基本用法,tk.Entry()
初始化完以後,用 grid()
來設定排版,Label 在左邊(0,0),Entry 在右邊(0,1) ,之後就進入 mainloop(),就可以完成初步的 tkinter Entry 體驗囉!範例如下,1
2
3
4
5
6
7
8
9
10
11
12
13#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title('my window')
mylabel = tk.Label(root, text='Name:')
mylabel.grid(row=0, column=0)
myentry = tk.Entry(root)
myentry.grid(row=0, column=1)
root.mainloop()
結果圖如下,
tkinter Entry 基本參數
這邊是 tkinter 的 tk.Entry()
的參數說明,有需要客製化 Entry 的一些變動的話,例如:設定Entry 的背景顏色或者設定 Entry 的邊框寬度,可以參考下面的參數,
bg
或 background
:文字框的背景顏色,預設是 light graybd
或 bordwith
:文字框的邊框寬度,預設是 2pxcursor
:滑鼠游標的外型,例如:arrow、circle、cross 與 plus 等等fg
或 foreground
:字型顏色,預設是黑色font
:字型highlightbackground
:沒有 focus 文字框時的邊框顏色highlightcolor
:focus 文字框時的邊框顏色highlightthickness
:focus 文字框時的邊框寬度justify
:文字對齊方式,選項有 tk.LEFT、tk.RIGHT 或 tk.CENTER,預設是 tk.LEFTrelief
:邊框3D陰影效果,tk.FLAT、tk.GROOVE、tk.RAISED、tk.RIDGE、tk.SOLID 或 tk.SUNKEN,預設為 tk.SUNKENselectbackground
:選取文字時的背景顏色selectborderwidth
:選取文字時的邊框寬度,預設是 1pxselectforeground
:選取文字時的顏色show
:顯示輸入的字元,例如用在密碼欄位時可以使用 show='*'
來顯示星號state
:文字框的狀態,state=tk.NORMAL 是允許輸入,state=tk.DISABLED 是無法輸入,預設是 state=tk.NORMALtakefocus
:預設接受 tab 鍵的 foucs,設成 0 則是不接收textvariable
:文字變數,需要傳入類型為 StringVar 的變數validate
:設定文字框的文字驗證選項validatecommand
:設定文字驗證 callback functionwidth
:文字框的寬度,單位是字元寬度xscrollcommand
:設定水平捲動軸,適用於文字框的內容寬度大於文字框的寬度時使用
tkinter 取得 Entry 的輸入文字
tkinter 取得 Entry 的輸入文字可以用 tk.Entry.get()
的方式,如下例子中的 myentry.get()
,這邊示範按下按鈕時將 Entry 裡的文字取出來後,並且設定成 mybutton 顯示的文字,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
def button_event():
#print(myentry.get())
if myentry.get() != '':
mybutton['text'] = myentry.get()
root = tk.Tk()
root.title('my window')
root.geometry('200x150')
myentry = tk.Entry(root)
myentry.pack()
mybutton = tk.Button(root, text='button', command=button_event)
mybutton.pack()
root.mainloop()
輸入文字且按下按鈕的結果圖如下,
這邊改用另一個例子,我們寫一個簡單的數學問題,讓使用者來回答,
取得 Entry 的輸入文字還有另一種方式,你可以宣告一個 tk.StringVar 變數 var,將 var 與 tk.Entry 綁訂,之後就可以用 var.get()
的方式來取得 Entry 的輸入文字,這次我們把它顯示在 messagebox 上,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import messagebox
def button_event():
#print(var.get())
if var.get() == '':
tk.messagebox.showerror('message', '未輸入答案')
elif var.get() == '2':
tk.messagebox.showinfo('message', '答對了!')
else:
tk.messagebox.showerror('message', '答錯')
root = tk.Tk()
root.title('my window')
mylabel = tk.Label(root, text='1+1=')
mylabel.grid(row=0, column=0)
var = tk.StringVar()
myentry = tk.Entry(root, textvariable=var)
myentry.grid(row=0, column=1)
mybutton = tk.Button(root, text='完成', command=button_event)
mybutton.grid(row=1, column=1)
root.mainloop()
結果圖如下,
關於 tk.messagebox 的詳細用法可以看這篇介紹。
tkinter Entry 限制輸入框只能輸入數字
這邊介紹蠻常使用到的功能,就是限制使用者只能在 Entry 輸入框裡輸入數字,需要在 tk.Tk().register()
註冊一個驗證的函式,在這個驗證函式裡你可以客製化一些規則,例如本例中的限制使用者只能輸入數字,大概的用法如下,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
def validate(P):
#print(P)
if str.isdigit(P) or P == '':
return True
else:
return False
root = tk.Tk()
root.title('my window')
mylabel = tk.Label(root, text='input:')
mylabel.pack(side=tk.LEFT)
vcmd = (root.register(validate), '%P')
myentry = tk.Entry(root, validate='key', validatecommand=vcmd)
myentry.pack(side=tk.LEFT)
root.mainloop()
結果圖如下,
詳細內容可以看我之前寫的 tkinter Entry 限制輸入數字這篇介紹。
tkinter Entry 使用 show='*'
隱藏輸入密碼
這邊示範一個登入視窗,裡面有兩個 Entry,分別是要讓使用者輸入使用者名稱與密碼,我們希望使用者輸入的密碼不要用明碼顯示出來,取而代之的是用 *
星號來顯示,那要怎麼作呢?就是在 tk.Entry() 初始化時設定 show='*'
參數,這樣輸入時就會顯示 *
星號而不會顯示明碼了,範例如下,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tkinter as tk
root = tk.Tk()
root.title('my window')
mylabel = tk.Label(root, text='Name:')
mylabel.grid(row=0, column=0)
myentry = tk.Entry(root)
myentry.grid(row=0, column=1)
mylabel2 = tk.Label(root, text='Password:')
mylabel2.grid(row=1, column=0)
myentry2 = tk.Entry(root, show='*')
myentry2.grid(row=1, column=1)
mybutton = tk.Button(root, text='Login')
mybutton.grid(row=2, column=1)
root.mainloop()
結果圖如下,
以上就是 Python tkinter Entry 文字輸入框用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!
其它相關文章推薦
Python tkinter 標籤用法與範例
Python tkinter 按鈕用法與範例
Python 新手入門教學懶人包
Python tkinter 新手入門教學