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 ...
随机推荐
- Kotlin 最佳实践
为什么写此文 Kotlin很烦,Gralde很烦,还都是升级狂,加一块更烦.几个月不接触Kotlin,再次上手时便一片迷茫.所以记录此文,以便再次上手时查阅. 使用Gradle创建Kotlin项目 m ...
- go互斥锁Mutex
go mutex是互斥锁,只有Lock和Unlock两个方法,在这两个方法之间的代码不能被多个goroutins同时调用到. 看代码: package main import ( "fmt& ...
- linux搭建sftp服务器
转自:http://blog.csdn.net/superswordsman/article/details/49331539 最近工作需要用到sftp服务器,被网上各种方法尤其是权限设置问题搞得晕头 ...
- 常见HTTP状态码及URL编码表
常见HTTP状态码 1xx: 信息 (用于表示临时响应并需要请求者执行操作才能继续的状态代码) 消息: 描述: 100 Continue 服务器仅接收到部分请求,但是一旦服务器并没有 ...
- Struts2之ValueStack、ActionContext
今天在看Action获取Resquest.Response时,发现了一个词:值栈.于是今天一天都在看,了解了值栈不仅能知道Action怎么获取request.response等这些,还会了解OGNL语 ...
- [转]Angular4 引用 material dialog时自定义对话框/deep/.mat-dialog-container
本文转自:https://blog.csdn.net/qq_24078843/article/details/78560556 版权声明:本文为博主原创文章,未经博主允许不得转载. https://b ...
- easyui datagrid 禁止选中行
没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) { // $(this).datagr ...
- 无法打开锁文件 /var/lib/dpkg/lock - open (13: 权限不够)
比如输入apt-get install eclipse,或者apt-get update 会提示 无法打开锁文件 /var/lib/dpkg/lock - open (13: 权限不够) 无法对状态 ...
- Extjs4.2 rest 与webapi数据交互----顺便请教了程序员的路该怎么走
这一章接着上一篇 对于Ext.data.Store 介紹 与总结,以及对以前代码的重构与优化 1.对于更新OnUpdate()函数的修改:先上代码: function OnUpdate(record) ...
- Linux中inotify软件部署及参数事件演示
声明:博主使用的是CentOS6.9的系统 参考资料: https://github.com/rvoicilas/inotify-tools/wiki http://www.ibm.com/devel ...