tkinter學(xué)習(xí)系列(四)之Button 控件

目錄

[TOC]

前言

Button小部件是一個標(biāo)準(zhǔn)的Tkinter的控件,用于實(shí)現(xiàn)各種按鈕据德。按鈕可以包含文本或圖像证芭,您可以調(diào)用Python函數(shù)或方法用于每個按鈕煤傍。Tkinter的按鈕被按下時朦肘,會自動調(diào)用該函數(shù)或方法

(一)基本用法和可選屬性

==1.基本用法==

基本用法:Button(根對象, [屬性列表])

根對象:在那個窗體顯示饭弓,例如主窗體。

屬性列表:是可選的屬性=屬性值組成媒抠。

==2.可選屬性==

屬性 說明
text 標(biāo)簽顯示的文本
font 設(shè)置文本的字體和大小
fg(foreground) 字體的顏色弟断,
bg (background) 標(biāo)簽的背景色
width 標(biāo)簽的寬度(一個中文的字體寬為單位)
height 標(biāo)簽的高度(一個中文的字體高為單位)
cursor 鼠標(biāo)的樣式
command 綁定事件
padx 文字到邊框的距離,水平方向
pady 文字到邊框的距離领舰,垂直方向
bd(borderwidth) 邊框的寬度
relief 邊框的樣式
justify 文本對齊方式
image 圖片
compound 圖片與文字的混搭
anchor 方位

(二)屬性的具體實(shí)現(xiàn)和案例

==1.常用屬性==

(1)font

font:設(shè)置字體與字體的大小

用法:font=("字體名"夫嗓,大小) 例如:font=(“黑體”, 20)

(2)fg 與 bg

fg 前景色冲秽,也就是字體的顏色舍咖,bg 背景顏色

用法:fg="red", fg="#121234"

(3)width 與 height

width height 標(biāo)簽的寬度與高度,都是以系統(tǒng)默認(rèn)的中文的一個字體寬高為單位

用法:width = 5, height=2

==案例一==

(1)源代碼

import tkinter as tk

win = tk.Tk()

# 普通的按鈕
button1 = tk.Button(win, text="Button1")
button1.pack()

# 背景色與前景色
button2 = tk.Button(win, text="Button2", bg="green", fg="blue")
button2.pack()

# 寬度與高度
button3 = tk.Button(win, text="Button3", width=10, height=2)
button3.pack()

# 邊距
button4 = tk.Button(win, text="Button4", padx=10, pady=10)
button4.pack()
win.mainloop()

(2)輸出效果

01.png

==2.按鈕里的圖片==

(1)只放圖片锉桑,沒有文字

需要先導(dǎo)入圖片的路徑:img1 = tk.PhotoImage(file="image/01.png")

再使用:image=img1

注:目前支持 .png 與 .gif 格式排霉, 還不支持 .jpg格式,==Button的大小是根據(jù)圖片的大小來確定的民轴。==

==案例二==

(1)源代碼:

import tkinter as tk

win = tk.Tk()

img1 = tk.PhotoImage(file="image/01.png")
img2 = tk.PhotoImage(file="image/03.png")
img3 = tk.PhotoImage(file="image/04.png")

# 300像素大小的圖片
button1 = tk.Button(win, text="Button1", image=img1)
button1.pack()

# 150像素大小的圖片
button2 = tk.Button(win, image=img2)
button2.pack()

# 50像素大小的圖片
button3 = tk.Button(win, image=img3)
button3.pack()

win.mainloop()

(2)輸出效果:

02.png

(3)圖片與文字混搭

需要使用:compound="對齊方式"攻柠,

對齊方式有:'left', "right", "center"

==案例三==

(1)源代碼

import tkinter as tk

win = tk.Tk()

img1 = tk.PhotoImage(file="image/01.png")
img2 = tk.PhotoImage(file="image/03.png")
img3 = tk.PhotoImage(file="image/04.png")


button1 = tk.Button(win, text="Button1", image=img1, compound="left")
button1.pack()

button2 = tk.Button(win, text="Button2", image=img2, compound="center")
button2.pack()

button3 = tk.Button(win, text="Button3", image=img3, compound="right")
button3.pack()

win.mainloop()

(2)輸出效果

03.png

==3.鼠標(biāo)的樣式==

cursor="鼠標(biāo)的屬性值"

pencil:筆型

circle:圓形

hand1:手型1

hand2:手型2

==案例四==

(1)源代碼

import tkinter as tk

win = tk.Tk()

# 筆型
button1 = tk.Button(win, text="Button1", cursor="pencil")
button1.pack()

# 圓形
button2 = tk.Button(win, text="Button2", cursor="circle")
button2.pack()

# 手型1
button3 = tk.Button(win, text="Button3", cursor="hand1")
button3.pack()

# 手型2
button4 = tk.Button(win, text="Button4", cursor="hand2")
button4.pack()

win.mainloop()

(2)輸出效果

當(dāng)我們把鼠標(biāo)放在按鈕上時,鼠標(biāo)的形狀會顯示不同的樣式后裸。

04.png

==4.邊框樣式==

relief= "邊框樣式值"

flat 無邊框

groove 中間凹

ridge 中間凸

raised 往中間凸

solid 往中間凹

sunken 不可以

==案例五==

(1)源代碼

import tkinter as tk

win = tk.Tk()

# flat 無邊框
button1 = tk.Button(win, text="flat", relief="flat", bd=10)
button1.pack()

# groove 中間凹
button2 = tk.Button(win, text="groove", relief="groove", bd=10)
button2.pack()

# ridge 中間凸
button3 = tk.Button(win, text="raised", relief="ridge", bd=10)
button3.pack()

# raised 往中間凸
button4 = tk.Button(win, text="ridge", relief="raised", bd=10)
button4.pack()

# solid 往中間凹
button5 = tk.Button(win, text="solid", relief="solid", bd=10)
button5.pack()

# sunken 不可以
button6 = tk.Button(win, text="sunken", relief="sunken", bd=10)
button6.pack()

win.mainloop()

(2)輸出效果

05.png

(三)按鈕的事件綁定

==1.普通的Button綁定事件==

(1)說明:

Button 使用 command=功能函數(shù) 來綁定

Button(win, text="確定", command=功能函數(shù))

==案例六==

(1)源代碼:

我們創(chuàng)建一個簡單的窗體瑰钮,只有一個按鈕控件,

我們綁定的事件是微驶,當(dāng)我們點(diǎn)擊"確定"按鈕時浪谴,會輸出“你點(diǎn)擊了按鈕”

import tkinter as tk
win = tk.Tk()

# 定義功能函數(shù), event是必須添加的參數(shù),不知道來自哪里
def button_command():
    print("你點(diǎn)擊了按鈕")
# 綁定事件
btn = tk.Button(win, text="確定", command=button_command)

btn.place(relx=0.2, rely=0.2, relwidth=0.5, relheight=0.1)
win.geometry("300x300+200+200")
win.mainloop()

(2)輸出效果:

06.png

==2.傳參數(shù)Button綁定事件==

(1)說明:

我們使用Button傳遞數(shù)值時因苹,需要用:

lambda: 功能函數(shù)(var1, var2, ……)

==案例七==

(1)源代碼:

我們同樣創(chuàng)建一個簡單的窗體苟耻,只有一個控件按鈕

我們綁定的事件是,當(dāng)我們點(diǎn)擊按鈕時扶檐,會傳入兩個參數(shù)凶杖,并在功能函數(shù)進(jìn)行計(jì)算。

import tkinter as tk
"""
    Button command 傳值事件
    command= lambda: function(var1, var2, ...)
"""


def sum_fun(a, b):
    result = a + b
    print("%d + %d = %d" % (a, b, result))


win = tk.Tk()
button = tk.Button(win, text="傳值事件", command=lambda: sum_fun(12, 13))
button.pack()
win.geometry("300x300+200+200")
win.mainloop()

(2)輸出效果:

07.png

作者:Mark

日期:2019/02/01 周五

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末款筑,一起剝皮案震驚了整個濱河市智蝠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奈梳,老刑警劉巖寻咒,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颈嚼,居然都是意外死亡毛秘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門阻课,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叫挟,“玉大人,你說我怎么就攤上這事限煞∧遥” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵署驻,是天一觀的道長奋献。 經(jīng)常有香客問我健霹,道長,這世上最難降的妖魔是什么瓶蚂? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任糖埋,我火速辦了婚禮,結(jié)果婚禮上窃这,老公的妹妹穿的比我還像新娘瞳别。我一直安慰自己,他們只是感情好杭攻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布祟敛。 她就那樣靜靜地躺著,像睡著了一般兆解。 火紅的嫁衣襯著肌膚如雪馆铁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天锅睛,我揣著相機(jī)與錄音叼架,去河邊找鬼。 笑死衣撬,一個胖子當(dāng)著我的面吹牛乖订,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播具练,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼乍构,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扛点?” 一聲冷哼從身側(cè)響起哥遮,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎陵究,沒想到半個月后眠饮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铜邮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年仪召,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片松蒜。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡扔茅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出秸苗,到底是詐尸還是另有隱情召娜,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布惊楼,位于F島的核電站玖瘸,受9級特大地震影響秸讹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜雅倒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一璃诀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧屯断,春花似錦、人聲如沸侣诺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽年鸳。三九已至趴久,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間搔确,已是汗流浹背彼棍。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膳算,地道東北人座硕。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像涕蜂,于是被迫代替她去往敵國和親华匾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容