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 ...
随机推荐
- aliyun阿里云Maven仓库配置
maven仓库用过的人都知道,国内有多么的悲催.还好有比较好用的镜像可以使用,尽快记录下来.速度提升100倍. http://maven.aliyun.com/nexus/#view-reposito ...
- Storm 入门教程
在这个教程中,你将学会如何创建 Storm 的topology并将他们部署到 Storm 集群上, 主要的语言是 Java,但是少数几个例子用 Python 编写来说明 Storm 的多语言支持能力. ...
- 前端开发环境之GRUNT自动WATCH压缩JS文件与编译SASS文件环境下Ruby安装sass常见错误分析
前言: 1.sass编译为css文件,早先时刻写css,后来看了sass挺不错的,于是在新的项目中开始使用上了sass.(grunt需要ruby环境,所以需要先安装ruby,sass环境) ①安装ru ...
- 钉钉接口:获取accessToken和打卡记录【分享】
post和get方法工具类:HttpUtils package weaver.dingtalk.utils; import com.alibaba.fastjson.JSONObject; impor ...
- Java并发编程:synchronized、Lock、ReentrantLock以及ReadWriteLock的那些事儿
目录 前言 synchronized用法 修饰方法 修饰实例方法 修饰静态方法 同步代码块 引出Lock Lock用法 子类:ReentrantLock 读写分离锁:ReadWriteLock Loc ...
- Java基础——Servlet(八)文件上传下载
一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 &l ...
- jQuery合并同一列中相同文本的相邻单元格
一.效果图 二.在html的head中引入jQuery <script language="javascript" src="${pageContext.reque ...
- Rancher2.0构建kubernetes(K8S)集群
一.环境准备 1.准备至少3台CentOS7版本的虚拟机 # IP地址 主机名称 192.168.1.160 rancher 192.168.1.161 master 192.168.1.162 no ...
- 一张图弄懂opengl的诸多库gl glu glut freeglut glew glfw之间关系
开始学习opengl,但是看opengl编程指南不同版本之间使用了一堆不同的库,概念名称全都搅起的,越看越糊涂,遂整理的一下opengl相关的一些库的名词, 才发现是不同时期不同版本不断发展的结果. ...
- JSON方式封装通信接口
1.封装通信接口数据的方法 2. 案例:生成json 注意:json_encode() 只能接收utf-8数据 测试: <?php $arr = array( 'id'=>1, 'name ...