Python Tkinter组件之Button

1,458 阅读4分钟

玩转Python

这是我参与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标准的组件。

  • 相同点

    1. Label 和 Button 都可以展示图片和文字
    2. Label 和 Button 的实例对象都需要 pack()显示出来
    3. Label 和 Button 展示图片格式只支持gif格式的
  • 区别点

    1. Label可以指定字体,Button只能使用单一字体
    2. Label只能显示静态的图片和文字,与Button组合使用可以实现动态效果
    3. 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 都我们常见不可或缺的组件,通过我们的学习,不断地练习使用,让它们能够更好地展现给用户。

以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心🌹🌹🌹