这是我参与8月更文挑战的第23天,活动详情查看: 8月更文挑战
复习回顾
我们在前面已经学习过了Tkinter的组件Label标签,对Label常用的属性及设置其属性的Options选项的含义进行详细的学习。
我们都知道 GUI 编程相关的组件都是继承Widget父类的,组件关系图如下:
本期,我们将学习如上图标记颜色的组件Button按钮相关方法及属性的使用。
1. Button按钮
⌛新时代农民工平常的一天,早晨闹钟响起,起床关闭闹钟开关①,指纹②打开IPhone手机查看信息,匆匆洗漱好,出门乘坐电梯并按下一楼③,赶上班车抵达了公司,打开电脑电源④,指尖跳跃在键盘上⑤,开启繁忙的社畜打工工作...
以上生活小场景中,标记数字的Button按键与我们一起互动,在我们日常生活不可或缺的作用
👉哪么什么是Button按钮?
Button 按钮用来执行用户的单机操作,可以和用户进行交互的一种Tkinter标准组件。
👉主要语法格式:
W = Button(master,options)
- master:父容器
- options:可选项。设置按键的属性
👉Button 特点:
- 可以包含文字、图像
- 按钮被单击后会自动调用对应的事件绑定的方法
2. Button 与 Label对比
Button 和 Label 都是Python Tkinter标准的组件。
-
相同点
- Label 和 Button 都可以展示图片和文字
- Label 和 Button 的实例对象都需要 pack()显示出来
- Label 和 Button 展示图片格式只支持gif格式的
-
区别点
- Label可以指定字体,Button只能使用单一字体
- Label只能显示静态的图片和文字,与Button组合使用可以实现动态效果
- Button 可以绑定事件,达到与用户进行交互的效果
3. Button option选项
| 选项 | 作用 |
|---|---|
| state | 按钮状态选项,状态有DISABLED/NORMAL/ACTIVE |
| activebackground | 当鼠标放上去时,按钮的背景色 |
| activeforeground | 当鼠标放上去时,按钮的前景色 |
| bd | 按钮边框的大小,默认为 2 个像素 |
| bg | 按钮的背景色 |
| fg | 按钮的前景色(按钮文本的颜色) |
| font | 文本字体,文字字号,文字字形。字形有overstrike/italic/bold/underline |
| height | 按钮的高度,如未设置此项,其大小以适应按钮的内容(文本或图片的大小) |
| width | 按钮的宽度,如未设置此项,其大小以适应按钮的内容(文本或图片的大小) |
| image | 按钮上要显示的图片,图片必须以变量的形式赋值给image,图片必须是gif格式。 |
| justify | 显示多行文本的时候,设置不同行之间的对齐方式,可选项包括LEFT, RIGHT, CENTER |
| padx | 按钮在x轴方向上的内边距(padding),是指按钮的内容与按钮边缘的距离 |
| pady | 按钮在y轴方向上的内边距(padding) |
| relief | 边框样式,设置控件显示效果,可选的有:FLAT、SUNKEN、RAISED、GROOVE、RIDGE。 |
| wraplength | 限制按钮每行显示的字符的数量,超出限制数量后则换行显示 |
| underline | 下划线。默认按钮上的文本都不带下划线。取值就是带下划线的字符串索引,为 0 时,第一个字符带下划线,为 1 时,第两个字符带下划线,以此类推 |
| text | 按钮的文本内容 |
3. Button绑定事件方式
方式一: 在定义相关事件后,Button对象添加command属性
# 1.定义事件
def addList():
pass
# 2. Button 对象添加command属性
but = Button(root,command=addList)
方式二:使用bind方法
b1 = Button(root, text="Add")
b1.bind("<Button-1>",addList)
4. Button 组件使用
📝 小案例:Button重复复制Label图标
代码如下
from tkinter import *
class Application(Frame):
def __init__(self,master=None):
# super()代表的是父类的定义,而不是父类对象
super().__init__(master)
self.master = master
self.pack()
# self.createwidget()
self.createWidget()
def createwidget(self):
self.but1 = Button(self)
self.but1["text"] = "add"
self.but1.pack()
self.but1["command"] = self.addinfo
def addinfo(self):
messagebox.showinfo("提示","添加成功")
def createWidget(self):
global photo
photo = PhotoImage(file="heart.gif")
self.but = Button(self,image = photo,command = self.addimage)
self.but.pack()
def addimage(self):
self.labimage = Label(self ,image=photo)
self.labimage.pack()
messagebox.showinfo("提示","添加成功")
root = Tk()
root.geometry("400x300+200+300")
root.title("MyfirstAPP")
app = Application(master=root)
root.mainloop()
总结
本期,我们学习Tkinter组件之Button带有的属性及相关方法的学习。
Button 和 Label 都我们常见不可或缺的组件,通过我们的学习,不断地练习使用,让它们能够更好地展现给用户。
以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹🌹🌹