按鈕button但我們點擊時,它可以執行相應的功能
Button小部件是一個標准的Tkinter小部件,用於各種按鈕。按鈕是為用戶設計的一個小部件,也就是說,如果用鼠標點擊按鈕,可能會開始一些操作。他們也可以包含文字和圖像像標簽。雖然標簽可以以各種字體顯示文本,但按鈕只能以單一字體顯示文本。一個按鈕的文本可以跨越多行。
Python函數或方法可以與一個按鈕相關聯。如果以某種方式按下該按鈕,將執行該功能或方法。


1 import tkinter as tk 2 from tkinter import ttk 3 win=tk.Tk() 4 win.title('GUI004') 5 6 aLabel=ttk.Label(win,text='A Label') 7 aLabel.grid(column=0,row=0) 8 9 def clickme(): 10 action.configure(text='*I have been clicked!') 11 aLabel.configure(foreground='red') 12 13 14 15 action=ttk.Button(win,text='Click Me',command=clickme) 16 action.grid(column=1,row=0) 17 18 win.mainloop()
【按鈕的綁定函數方法】
第一種:在按鈕組件被聲明的時候用command屬性聲明,command屬性接受一個函數名,注意函數名不要加引號。
第二種:使用bind方法,該方法是Misc這個類的一個方法
【網上小程序】
1 from tkinter import * 2 def xinlabel(): 3 global xin 4 s=Label(xin,text='增加一行') 5 s.pack() 6 7 8 xin=Tk() 9 b1=Button(xin,text='點我',command=xinlabel) 10 b1.pack() 11 12 xin.mainloop()


【注】
pack是tkinter中的一個布局管理模塊
常用的選擇(option)有:
- expand:當值為“yes”(或者YES tkinter模塊中 “yes”==YES)時,side選項無效。組件顯示在父配件中心位置;若fill選項為”both”,則填充父組件的剩余空間,其默認值為NO。
- fill:填充x(y)方向上的空間,當屬性side=”top”或”bottom”時,填充x方向;當屬性side=”left”或”right”時,填充”y”方向;當expand選項為”yes”時,填充父組件的剩余空間。
- side:定義停靠在父組件哪一邊,TOP (默認), BOTTOM, LEFT, 或者 RIGHT.
【以下內容來源於網絡】
pack布局
pack常用屬性
| 屬性名 | 屬性簡析 | 取值 | 取值說明 |
| fill | 設置組件是否向水平或垂直方向填充 | X、Y、BOTH 和NONE | fill = X(水平方向填充)fill = Y(垂直方向填充)fill = BOTH(水平和垂直)NONE 不填充 |
| expand | 設置組件是否展開,當值為YES時,side選項無效。組件顯示在父容器中心位置;若fill選項為BOTH,則填充父組件的剩余空間。默認為不展開 | YES 、NO(1、0) | expand=YES expand=NO |
| side | 設置組件的對齊方式 | LEFT、TOP、RIGHT、BOTTOM | 值為左、上、右、下 |
| ipadx、ipady | 設置x方向(或者y方向)內部間隙(子組件之間的間隔) | 可設置數值,默認是0 | 非負整數,單位為像素 |
| padx、pady | 設置x方向(或者y方向)外部間隙(與之並列的組件之間的間隔) | 可設置數值,默認是0 | 非負整數,單位為像素 |
| anchor | 錨選項,當可用空間大於所需求的尺寸時,決定組件被放置於容器的何處 | N、E、S、W、NW、NE、SW、SE、CENTER(默認值為CENTER) | 表示八個方向以及中心 |
注意:上表中取值都是常量,YES等價於”yes”,亦可以直接傳入字符串值。另外當界面復雜度增加時,要實現某種布局效果,需要分層來實現。
pack類提供了下列函數(使用組件實例對象調用):
| 函數名 | 描述 |
| pack_slaves() | 以列表方式返回本組件的所有子組件對象。 |
| pack_configure(option=value) | 給pack布局管理器設置屬性,使用屬性(option)= 取值(value)方式設置 |
| propagate(boolean) | 設置為True表示父組件的幾何大小由子組件決定(默認值),反之則無關。 |
| pack_info() | 返回pack提供的選項所對應得值。 |
| pack_forget() | Unpack組件,將組件隱藏並且忽略原有設置,對象依舊存在,可以用pack(option, …),將其顯示。 |
| location(x, y) | x, y為以像素為單位的點,函數返回此點是否在單元格中,在哪個單元格中。返回單元格行列坐標,(-1, -1)表示不在其中 |
| size() | 返回組件所包含的單元格,揭示組件大小。 |
grid布局
grid布局又被稱作網格布局,是最被推薦使用的布局。程序大多數都是矩形的界面,我們可以很容易把它划分為一個幾行幾列的網格,然后根據行號和列號,將組件放置於網格之中。使用grid 布局時,需要在里面指定兩個參數,分別用row 表示行,column 表示列。需要注意的是 row 和 column 的序號都從0 開始。
grid屬性設置
| 屬性名 | 屬性簡析 | 取值 | 取值說明 |
| row、column | row為行號,column為列號,設置將組件放置於第幾行第幾列 | 取值為行、列的序號,不是行數與列數 | row 和 column 的序號都從0 開始 |
| sticky | 設置組件在網格中的對齊方式 | N、E、S、W、NW、NE、SW、SE、CENTER | 類似於pack布局中的錨選項 |
| rowspan | 組件所跨越的行數 | 跨越的行數 | 取值為跨越占用的行數,而不是序號 |
| columnspan | 組件所跨越的列數 | 跨越的列數 | 取值為跨越占用的列數,而不是序號 |
| ipadx、ipady、padx、pady | 組件的內部、外部間隔距離,與pack的該屬性用法相同 | 同pack | 同pack |
grid類提供了下列函數(使用組件實例對象調用):
| 函數名 | 描述 |
| grid_slaves() | 以列表方式返回本組件的所有子組件對象。 |
| grid_configure(option=value) | 給pack布局管理器設置屬性,使用屬性(option)= 取值(value)方式設置 |
| grid_propagate(boolean) | 設置為True表示父組件的幾何大小由子組件決定(默認值),反之則無關。 |
| grid_info() | 返回pack提供的選項所對應得值。 |
| grid_forget() | Unpack組件,將組件隱藏並且忽略原有設置,對象依舊存在,可以用pack(option, …),將其顯示。 |
| grid_location(x, y) | x, y為以像素為單位的點,函數返回此點是否在單元格中,在哪個單元格中。返回單元格行列坐標,(-1, -1)表示不在其中 |
| size() | 返回組件所包含的單元格,揭示組件大小。 |
place布局。
最簡單最靈活的一種布局,使用組件坐標來放置組件的位置。但是不太推薦使用,在不同分辨率下,界面往往有較大差異。
place屬性設置
| 屬性名 | 屬性簡析 | 取值 | 取值說明 |
| anchor | 錨選項,同pack布局 | 默認值為 NW | 同pack布局 |
| x、y | 組件左上角的x、y坐標 | 整數,默認值0 | 絕對位置坐標,單位像素 |
| relx、rely | 組件相對於父容器的x、y坐標 | 0~1之間浮點數 | 相對位置,0.0表示左邊緣(或上邊緣),1.0表示右邊緣(或下邊緣) |
| width、height | 組件的寬度、高度 | 非負整數 | 單位像素 |
| relwidth、relheight | 組件相對於父容器的寬度、高度 | 0~1之間浮點數 | 與relx(rely)取值相似 |
| bordermode | 如果設置為INSIDE,組件內部的大小和位置是相對的,不包括邊框;如果是OUTSIDE,組件的外部大小是相對的,包括邊框 | INSIDE、OUTSIDE(默認值INSIDE) | 可以使用常量INSIDE、OUTSIDE,也可以使用字符串形式”inside”、”outside” |
place類提供了下列函數(使用組件實例對象調用):
| 函數名 | 描述 |
| place_slaves() | 以列表方式返回本組件的所有子組件對象。 |
| place_configure(option=value) | 給pack布局管理器設置屬性,使用屬性(option)= 取值(value)方式設置 |
| propagate(boolean) | 設置為True表示父組件的幾何大小由子組件決定(默認值),反之則無關。 |
| place_info() | 返回pack提供的選項所對應得值。 |
| grid_forget() | Unpack組件,將組件隱藏並且忽略原有設置,對象依舊存在,可以用pack(option, …),將其顯示。 |
| location(x, y) | x, y為以像素為單位的點,函數返回此點是否在單元格中,在哪個單元格中。返回單元格行列坐標,(-1, -1)表示不在其中 |
| size() | 返回組件所包含的單元格,揭示組件大小。 |
