Python Tkinter之Button控件介绍
python tkinter之button控件介绍
1. 序言
本章介绍tkinter的button控件,本文是python gui系列的第6篇文章,整个约20篇博客,将全面的介绍python tkinter常用控件,最后还将基于tkinter搭建两个比较完整的小项目。
2. 环境信息
********************************
本系列运行平台:mac os 10.13.4
python 版本:3.6.4
********************************
3. button控件
button小部件是一个标准的tkinter的部件,用于实现各种按钮。按钮可以包含文本或图像,您可以调用python函数或方法用于每个按钮。tkinter的按钮被按下时,会自动调用该函数或方法。
按钮文本可跨越一个以上的行。此外,文本字符可以有下划线,例如标记的键盘快捷键。默认情况下,使用tab键可以移动到一个按钮部件。
用法:button(根对象, [属性列表]),常用的属性列表如下:
函数 |
描述 |
text |
显示文本内容 |
command |
指定button的事件处理函数 |
compound |
同一个button既显示文本又显示图片,可用此参数将其混叠起来,compound=’bottom’(图像居下),compound=’center’(文字覆盖在图片上),left,right,top略 |
bitmap |
指定位图,如bitmap= bitmapimage(file = filepath) |
image |
button不仅可以显示文字,也可以显示图片,image= photoimage(file="../xxx/xxx.gif") ,目前仅支持gif,pgm,ppm格式的图片 |
focus_set |
设置当前得到的焦点 |
master |
代表了父窗口 |
bg |
背景色,如bg=”red”,bg="#ff56ef" |
fg |
前景色,如fg=”red”,fg="#ff56ef" |
font |
字体及大小,如font=("arial", 8),font=("helvetica 16 bold italic") |
height |
设置显示高度、如果未设置此项,其大小以适应内容标签 |
relief |
指定外观装饰边界附近的标签,默认是平的,可以设置的参数:flat、groove、raised、ridge、solid、sunken |
width |
设置显示宽度,如果未设置此项,其大小以适应内容标签 |
wraplength |
将此选项设置为所需的数量限制每行的字符,数默认为0 |
state |
设置组件状态;正常(normal),激活(active),禁用(disabled) |
anchor |
设置button文本在控件上的显示位置,可用值:n(north),s(south),w(west),e(east),和ne,nw,se,sw |
textvariable |
设置button与textvariable属性 |
bd |
设置button的边框大小;bd(bordwidth)缺省为1或2个像素 |
以下是button常用的函数
方法 |
描述 |
flash() |
flash the button. this method redraws the button several times, alternating between active and normal appearance. |
invoke() |
invoke the command associated with the button. |
4. 一组实例
实例1-创建按钮
from tkinter import* #初始化tk() mywindow = tk() #设置标题 mywindow.title('python gui learning') #创建两个按钮 b1=button(mywindow, text='button1',bg="red", relief='raised', width=8, height=2) b1.grid(row=0, column=0, sticky=w, padx=5,pady=5) b2=button(mywindow, text='button2', font=('helvetica 10 bold'),width=8, height=2) b2.grid(row=0, column=1, sticky=w, padx=5, pady=5) #进入消息循环 mywindow.mainloop()
运行结果:
实例2-创建按钮并绑定响应函数,输入半径,计算圆面积并输出。
from tkinter import* def printinfo(): #清理entry2 entry2.delete(0, end) #根据输入半径计算面积 r=int(entry1.get()) s= 3.1415926*r*r entry2.insert(10, s) #清空entry2控件 entry1.delete(0, end) #初始化tk() mywindow = tk() #设置标题 mywindow.title('python gui learning') #标签控件布局 label(mywindow, text="input").grid(row=0) label(mywindow, text="output").grid(row=1) #entry控件布局 entry1=entry(mywindow) entry2=entry(mywindow) entry1.grid(row=0, column=1) entry2.grid(row=1, column=1) #quit按钮退出;run按钮打印计算结果 button(mywindow, text='quit', command=mywindow.quit).grid(row=2, column=0, sticky=w, padx=5,pady=5) button(mywindow, text='run', command=printinfo).grid(row=2, column=1, sticky=w, padx=5, pady=5) #进入消息循环 mywindow.mainloop()
运行结果:
输入半径12
点击按钮“run”,输出结果
点击按钮“quit”退出