Entry 单行输入框
Entry 是 tkinter 里用来让用户进行输入数据的“单行输入框”,这篇教学会介绍如何在 tkinter 视窗里加入 Entry 单行输入框,并实作输入数据后进行互动的程序。
快速导览:
因为 Google Colab 不支援 tkinter,所以请使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或使用 Anaconda Jupyter 进行实作 ( 参考:使用 Anaconda )。
加入 Entry
建立 tkinter 视窗对象后,透过 Entry 方法,就能在视窗对象中建立 Entry 单行输入框,必要的参数有一个,第一个表示要加入的视窗对象,建立 Entry 后再使用 pack() 方法将其加入 ( 参考 pack 参数设定 ),下方的程序码执行后,会在视窗里加入一个 Entry ( 位置、大小和颜色都使用默认值 )。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
entry = tk.Entry(root) # 放入單行輸入框
entry.pack()
root.mainloop()
Entry 参数设定
加入 Entry 之后,可以透过 Entry 的参数调整内容的样式,下方列出 Entry 和其他元件相同的参数:
| 参数 | 说明 |
|---|---|
| width | 宽度,单位是字元数。 |
| height | 高度,单位是字元数。 |
| padx | 内容和标签左右边界的间距 ( px ),默认 1。 |
| pady | 内容和标签上下边界的间距 ( px ),默认 1。 |
| bg/background | 背景颜色,可以使用十六进制色码或颜色名称。 |
| fg/foreground | 文字颜色,可以使用十六进制色码或颜色名称。 |
| font | 字型设定,包含字体、大小 ( px )、粗体 ( bold )、斜体 ( italic )。 |
| justify | 多行文字的对齐方式,可以设定 left、right、center,默认 center。 |
| cursor | 鼠标移动到标签的样式,可以设定 arrow、circle、cross、plus...等,默认 arrow。 |
| relief | 边框样式,可以设定 flat、sunken、raised、groove、ridge、solid,默认 flat。 |
| bd/borderwidth | 边框粗细,默认 1。 |
| textvariable | 文字内容的变数名称,如果变数被修改,文字就会发生变化。 |
| wraplength | 一段文字超过多少宽度 ( px ) 会换行。 |
下方是 Entry 单行输入框行为相关的参数:
| 参数 | 说明 |
|---|---|
| show | 指定显示的字元为某个符号,例如输入密码,可以指定 show='*',输入的内容就会变成星号。 |
| selectborderwidth | 选取输入框内容的外框宽度。 |
| selectbackground | 选取输入框内容的背景颜色。 |
| selectforeground | 选取输入框内容的文字颜色。 |
| xscrollcommand | 与 set() 方法搭配,加上水平卷轴。 |
| state | 状态,tk.NORMAL 可使用 ( 默认 )、tk.DISABLED 不可使用。 |
Entry 内容操作方法
透过下列方法,可以取得或删除 Entry 单行输入框的内容,或针对内容进行一些相关操作:
| 方法 | 参数 | 说明 |
|---|---|---|
| get() | 取得输入框的内容。 | |
| delete() | first, last=None | 指定删除 first~last 区间的内容。 |
| icursor() | index | 移动输入标记到指定内容索引值。 |
| index() | index | 取得指定的索引值。 |
| insert() | index, s | 在指定索引的位置插入内容。 |
| select_adjust() | index | 选取索引值位置和之前的内容。 |
| select_clear() | 清空输入字段内容。 | |
| select_from() | index | 设定选取的位置。 |
| select_present() | 如果有选取则回传 True,否则 False。 | |
| select_range() | start, end | 回传 start~end 范围内的值。 |
| select_to() | index | 选择指定索引值的内容。 |
| xview() | index | 如果文字过长,指定要看到哪个索引值。 |
| xview_scroll() | number, what | 卷动卷轴到指定位置。 |
即时显示输入文字
下方的程序码放入一个 Label 和一个 Entry,两个元件都使用 textvariable 共用变数 a,执行后当输入框内容发生改变,Label 的内容也会跟着变化。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
a = tk.StringVar() # 建立文字變數
a.set('') # 一開始設定沒有內容
tk.Label(root, textvariable=a).pack() # 放入 Label
tk.Entry(root, textvariable=a).pack() # 放入 Entry
root.mainloop()
点选按钮,显示输入文字
除了可以即时显示文字,也可以使用 Button 元件,设定点击按钮后,再显示输入文字,同时也可搭配 delete 方法,设计点击按钮后清空输入字段的内容。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
a = tk.StringVar()
b = tk.StringVar()
a.set('')
def show():
a.set(b.get()) # 顯示輸入的文字
def clear():
b.set('') # 設定變數 b 為空字串
entry.delete(0,'end') # 清空輸入欄位內容
label = tk.Label(root, textvariable=a) # 放入標籤
label.pack()
entry = tk.Entry(root, textvariable=b) # 放入輸入欄位 ( 變數為 b )
entry.pack()
btn1 = tk.Button(root, text='顯示', command=show) # 放入顯示按鈕,點擊後執行 show 函式
btn1.pack()
btn2 = tk.Button(root, text='清除', command=clear) # 放入清空按鈕,點擊後執行 clear 函式
btn2.pack()
root.mainloop()
微信扫码关注
抖音扫码关注