Button 按钮
Button 是 tkinter 里用来可以跟用户鼠标互动的按钮对象,这篇教学会介绍如何在 tkinter 视窗里加入 Button 按钮,并实作一些简单的点击按钮进行互动的程序。
快速导览:
因为 Google Colab 不支援 tkinter,所以请使用本机环境 ( 参考:使用 Python 虚拟环境 ) 或使用 Anaconda Jupyter 进行实作 ( 参考:使用 Anaconda )。
加入 Button 按钮
建立 tkinter 视窗对象后,透过 Button 方法,就能在视窗对象中建立 Button 按钮,必要的参数有两个,第一个表示要加入的视窗对象,第二个则是标签参数 ( 通常是文字 text、图片 image ),建立 Button 按钮后再使用 pack() 方法将其加入 ( 参考 pack 参数设定 ),下方的程序码执行后,会在视窗里加入一个按钮 ( 位置、大小和颜色都使用默认值 )。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
btn = tk.Button(root, text='我是按鈕') # 建立 Button 按鈕
btn.pack() # 加入視窗中
# tk.Button(root, text='我是按鈕').pack() # 如果不使用變數,也可使用這種做法
root.mainloop()
Button 按钮参数设定
加入 Button 之后,可以透过 Button 的参数调整内容的样式,下方列出 Button 和其他元件相同的参数:
| 参数 | 说明 |
|---|---|
| anchor | 摆放位置,可以设定 n、s、w、e、ne、nw、sw、se、center ( e 右,w 左,s 下,n 上 ),默认 center。 |
| text | 文字内容,可以使用换行符 ( \n )。 |
| width | 宽度,单位是字元数,默认 0。 |
| height | 高度,单位是字元数,默认 0。 |
| 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 | 文字内容的变数名称,如果变数被修改,文字就会发生变化。 |
| underline | 第几个字元开始加底线 ( 0 为第一个字元, 默认 -1 不加底线 )。 |
| wraplength | 一段文字超过多少宽度 ( px ) 会换行。 |
| image | 图片内容。 |
| bitmap | 使用 bitmap 图示作为标签内容。 |
| compound | 设定文字与图片排列的方式,可以设定 none、center、top、bottom、left、right,默认 none。 |
下方是 Button 按钮行为相关的参数:
| 参数 | 说明 |
|---|---|
| command | 按下按钮要执行的函数。 |
| activeforeground | 按下按钮时的按钮文字颜色。 |
| state | 按钮状态,tk.NORMAL 可使用 ( 默认 )、tk.DISABLED 不可使用。 |
设定 Button 按钮样式样式
下方的程序码设定 Button 按钮的 font、padx、pady、activeforeground 参数,就能调整按钮相关样式 ( 点击按钮时,按钮文字会变成红色 )。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
btn = tk.Button(root,
text='我是按鈕',
font=('Arial',30,'bold'),
padx=10,
pady=10,
activeforeground='#f00'
)
btn.pack()
root.mainloop()
点击按钮累积数字
参考“Label 使用文字变数”,设定文字变数 a 以及全域变数 n,并定义一个函数 add,每次执行 add 函数时将 n 增加 1,并更新变数 a 的内容,最后设定 Button 的 command 参数为 add ( 表示点击按钮时执行 add )。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
n = 0 # n 等於 0
a = tk.StringVar() # 設定 a 為文字變數
a.set(n) # 設定 a 的內容
def add():
global n # n 是全域變數
n = n + 1 # 每次執行 add 時將 n 增加 1
a.set(n) # 設定 a 的內容
mylabel = tk.Label(root, textvariable=a, font=('Arial',20)) # 放入標籤
mylabel.pack()
# Button 設定 command 參數
btn = tk.Button(root,
text='我是按鈕',
font=('Arial',30,'bold'),
command=add
)
btn.pack()
root.mainloop()
invoke() 调用按钮
建立 Button 按钮之后,可以使用 invoke() 方法调用按钮,也就是执行 invoke() 之后等同按下该颗按钮,以上面点击按钮增加数字的程序为例,如果在最后加上一个重复四次的 for 循环使用四次 invoke(),视窗打开后就会看见数字从 4 开始 ( 因为很快速的点击四下 )。
import tkinter as tk
root = tk.Tk()
root.title('oxxo.studio')
root.geometry('200x200')
n = 0 # n 等於 0
a = tk.StringVar() # 設定 a 為文字變數
a.set(n) # 設定 a 的內容
def add():
global n # n 是全域變數
n = n + 1 # 每次執行 add 時將 n 增加 1
a.set(n) # 設定 a 的內容
mylabel = tk.Label(root, textvariable=a, font=('Arial',20)) # 放入標籤
mylabel.pack()
# Button 設定 command 參數
btn = tk.Button(root,
text='我是按鈕',
font=('Arial',30,'bold'),
command=add
)
btn.pack()
for i in range(4):
btn.invoke()
root.mainloop()
微信扫码关注
抖音扫码关注