目录

目录

前言

Button小部件是一个标准的Tkinter的控件,用于实现各种按钮。按钮可以包含文本或图像,您可以调用Python函数或方法用于每个按钮。Tkinter的按钮被按下时,会自动调用该函数或方法

(一)基本用法和可选属性

1.基本用法

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

根对象:在那个窗体显示,例如主窗体。

属性列表:是可选的属性=属性值组成。

2.可选属性

属性 说明
text 标签显示的文本
font 设置文本的字体和大小
fg(foreground) 字体的颜色,
bg (background) 标签的背景色
width 标签的宽度(一个中文的字体宽为单位)
height 标签的高度(一个中文的字体高为单位)
cursor 鼠标的样式
command 绑定事件
padx 文字到边框的距离,水平方向
pady 文字到边框的距离,垂直方向
bd(borderwidth) 边框的宽度
relief 边框的样式
justify 文本对齐方式
image 图片
compound 图片与文字的混搭
anchor 方位

(二)属性的具体实现和案例

1.常用属性

(1)font

font:设置字体与字体的大小

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

(2)fg 与 bg

fg 前景色,也就是字体的颜色,bg 背景颜色

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

(3)width 与 height

width height 标签的宽度与高度,都是以系统默认的中文的一个字体宽高为单位

用法: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)输出效果

2.按钮里的图片

(1)只放图片,没有文字

需要先导入图片的路径:img1 = tk.PhotoImage(file="image/01.png")

再使用:image=img1

注:目前支持 .png 与 .gif 格式, 还不支持 .jpg格式,Button的大小是根据图片的大小来确定的。

案例二

(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)输出效果:

(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)输出效果

3.鼠标的样式

cursor="鼠标的属性值"

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)输出效果

当我们把鼠标放在按钮上时,鼠标的形状会显示不同的样式。

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)输出效果

(三)按钮的事件绑定

1.普通的Button绑定事件

(1)说明:

Button 使用 command=功能函数 来绑定

Button(win, text="确定", command=功能函数)

案例六

(1)源代码:

我们创建一个简单的窗体,只有一个按钮控件,

我们绑定的事件是,当我们点击"确定"按钮时,会输出“你点击了按钮”

import tkinter as tk
win = tk.Tk() # 定义功能函数, event是必须添加的参数,不知道来自哪里
def button_command():
print("你点击了按钮")
# 绑定事件
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)输出效果:

2.传参数Button绑定事件

(1)说明:

我们使用Button传递数值时,需要用:

lambda: 功能函数(var1, var2, ……)

案例七

(1)源代码:

我们同样创建一个简单的窗体,只有一个控件按钮

我们绑定的事件是,当我们点击按钮时,会传入两个参数,并在功能函数进行计算。

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)输出效果:

作者:Mark

日期:2019/02/01 周五

tkinter学习系列(四)之Button 控件的更多相关文章

  1. WP8.1学习系列(第二十章)——添加控件和处理事件

    先决条件 添加控件 设置控件的名称 设置控件属性 创建事件处理程序 新控件 总结 相关主题 通过使用如按钮.文本框和组合框等控件,你可以创建应用的 UI. 下面将显示如何将控件添加到应用.处理控件时, ...

  2. 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件

        好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...

  3. WPF学习系列之五(WPF控件)

    控件:    1.内容控件------这些控件能够包含嵌套的元素,为它们提供几乎无限的显示能力.内容控件包括Lable,Button 以及ToolTip类. 内容控件是更特殊的控件类型,它们可以包含( ...

  4. WP8.1学习系列(第十章)——中心控件Hub设计指南

    Windows Phone 应用商店应用中的中心控件指南   在本文中 说明 示例 用法指南 设计指南 相关主题 重要的 API Hub (XAML) HubSection (XAML) 说明 中心控 ...

  5. ABP 基于DDD的.NET开发框架 学习(四)时间控件采用datetimepicker注意事项

    $('#datetimepicker1').datetimepicker({ format: 'yyyy/mm/dd hh:ii:ss',//这是只能用小写的大写的与ABP中的字母识别起冲突 loca ...

  6. winform学习(7)Label控件、Button控件、TextBox控件

    Label控件是System.Windows.Forms.Label 类提供的控件. 作用:主要用来提供其他控件的描述文字,例如:登录窗体上的用户名.密码(输入框前面的字) Button控件是Syst ...

  7. 《Dotnet9》系列-开源C# WPF控件库3《HandyControl》强力推荐

    大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员.我最近开始写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用do ...

  8. UGUI Button控件

    今天一起来学习下Button控件, Button控件其实是由Text,Button,Image组件形成的. 这里就简单介绍下Button组件 Interactable: 代表该组件是否进行交互, 我们 ...

  9. ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl

    原文:ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经 ...

  10. ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 后篇 --事件冒泡

    原文:ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 后篇 --事件冒泡 CompositeControl  后篇 --事件冒泡 系列文章链接: ASP.NET ...

随机推荐

  1. MD5加密之加密字符串

    public static String encode(String str) { String encodeString = ""; try { MessageDigest md ...

  2. 无源码调试smali

    0x01    工具①Android Studio最新版.(用的1.5)②apktool尽量使用最新版的.(反编译本人用baksmali-2.1.3.jar)③smalidea插件.下载地址https ...

  3. antd tree组件文件名换行 + 点击展开时,自动收起同级其他展开目录

    1.在项目中用 antd的tree组件的时候,遇到两个问题 1.文件名太长的话 会超出容器 很难看,解决方法如下 ` 引入css在global下设置 :global { .ant-tree li .a ...

  4. SQL 必知必会·笔记<10>联结表

    可伸缩(scale) 能够适应不断增加的工作量而不失败.设计良好的数据库或应用程序 称为可伸缩性好(scale well). 联结(JOIN) 联结(JOIN)是一种机制,用来在一条SELECT 语句 ...

  5. 【JAVA】ThreadLocal源码分析

    ThreadLocal内部是用一张哈希表来存储: static class ThreadLocalMap { static class Entry extends WeakReference<T ...

  6. (转)MySQL触发器trigger示例详解

    一.什么是触发器 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合.触发器的这种特性可以协助应用在数据库端确保数据的完整性. 举个例子,比如你现在有两个表[用户表]和[ ...

  7. Python机器学习笔记:使用Keras进行回归预测

    Keras是一个深度学习库,包含高效的数字库Theano和TensorFlow.是一个高度模块化的神经网络库,支持CPU和GPU. 本文学习的目的是学习如何加载CSV文件并使其可供Keras使用,如何 ...

  8. springboot + freemarker 实现国际化

    前言 写过一篇springboot+freemarker国际化过程中的细节问题,但没有写过具体的国际化实现过程.正好有人在问,我就把我实现的过程贴出来,即使自己知识的一个备份,如果对别人有点用,那是再 ...

  9. SpringBoot之使用Scheduled做定时任务

    定时任务有好多开源框架比如Quartz,@Scheduled是Spring的一个定时任务注解,通过注解配置就能够轻量级的定时任务,简单方便. 一.@Scheduled注解介绍 这里先贴上@Schedu ...

  10. SpringMVC+jquery.uploadify 上传文件

    前言 以前用Asp.net MVC+uploadify上传文件,最近学习SpringMVC,所以就用SpringMVC+uploadify做个上传文件的demo. 刚开始用form表单的方式提交,在C ...