tkinter学习系列(四)之Button 控件
目录
前言
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 控件的更多相关文章
- WP8.1学习系列(第二十章)——添加控件和处理事件
先决条件 添加控件 设置控件的名称 设置控件属性 创建事件处理程序 新控件 总结 相关主题 通过使用如按钮.文本框和组合框等控件,你可以创建应用的 UI. 下面将显示如何将控件添加到应用.处理控件时, ...
- 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件
好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...
- WPF学习系列之五(WPF控件)
控件: 1.内容控件------这些控件能够包含嵌套的元素,为它们提供几乎无限的显示能力.内容控件包括Lable,Button 以及ToolTip类. 内容控件是更特殊的控件类型,它们可以包含( ...
- WP8.1学习系列(第十章)——中心控件Hub设计指南
Windows Phone 应用商店应用中的中心控件指南 在本文中 说明 示例 用法指南 设计指南 相关主题 重要的 API Hub (XAML) HubSection (XAML) 说明 中心控 ...
- ABP 基于DDD的.NET开发框架 学习(四)时间控件采用datetimepicker注意事项
$('#datetimepicker1').datetimepicker({ format: 'yyyy/mm/dd hh:ii:ss',//这是只能用小写的大写的与ABP中的字母识别起冲突 loca ...
- winform学习(7)Label控件、Button控件、TextBox控件
Label控件是System.Windows.Forms.Label 类提供的控件. 作用:主要用来提供其他控件的描述文字,例如:登录窗体上的用户名.密码(输入框前面的字) Button控件是Syst ...
- 《Dotnet9》系列-开源C# WPF控件库3《HandyControl》强力推荐
大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员.我最近开始写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用do ...
- UGUI Button控件
今天一起来学习下Button控件, Button控件其实是由Text,Button,Image组件形成的. 这里就简单介绍下Button组件 Interactable: 代表该组件是否进行交互, 我们 ...
- ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl
原文:ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 第四章 组合控件开发CompositeControl 大家好,今天我们来实现一个自定义的控件,之前我们已经 ...
- ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 后篇 --事件冒泡
原文:ASP.NET自定义控件组件开发 第四章 组合控件开发CompositeControl 后篇 --事件冒泡 CompositeControl 后篇 --事件冒泡 系列文章链接: ASP.NET ...
随机推荐
- 关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup
http://www.cnblogs.com/binye-typing/p/6656595.html 读者可能会奇怪我标题怎么理成这个鬼样子,主要是单单写 lxml 与 bs4 这两个 py 模块名可 ...
- [java核心技术01]__继承与多态、重载与重写、抽象类与接口
前言 前面简单学习了面向对象的知识,知道了其两个重要的特性,继承与多态,今天就围绕着面向对象的这两个特性,将继承与多态及相关的几个几个定义重载与重写,抽象类与接口的相关知识具体学习一下. 类的继承 关 ...
- 从零开始学 Web 之 JS 高级(三)apply与call,bind,闭包和沙箱
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- Kafka项目实战-用户日志上报实时统计之应用概述
1.概述 本课程的视频教程地址:<Kafka实战项目之应用概述> 本课程是通过一个用户实时上报日志来展开的,通过介绍 Kafka 的业务和应用场景,并带着大家搭建本 Kafka 项目的实战 ...
- [深度学习]理解RNN, GRU, LSTM 网络
Recurrent Neural Networks(RNN) 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义 ...
- Spark RDD转换为DataFrame
#构造case class,利用反射机制隐式转换 scala> import spark.implicits._ scala> val rdd= sc.textFile("inp ...
- ABP Zero项目入门踩坑
1.下载ABP项目模板, 打开网址https://aspnetboilerplate.com/Templates,选择MultiPage Web Application,输入项目名称和验证码,即可点击 ...
- 《深入理解Java虚拟机:JVM高级特性与最佳实践》读书笔记
第一部分 走进Java 一.走进Java 1.概述 java广泛应用于嵌入式系统.移动终端.企业服务器.大型机等各种场合,摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想 2.java技术体系 ...
- Django Rest framework 之 认证
django rest framework 官网 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest fra ...
- Python 单例设计模式
class Foo: def __init__(self, name, age): self.name = name self.age = age def show(self): print(self ...