![Python GUI设计:tkinter菜鸟编程](https://wfqqreader-1252317822.image.myqcloud.com/cover/737/27111737/b_27111737.jpg)
第4章 功能按钮Button
4-1 功能按钮基本概念
功能按钮也可称作按钮,在窗口组件中可以设计在单击功能按钮时,执行某一个特定的动作,这个动作也称为callback方法,也就是说我们可以将功能按钮当作用户与程序间沟通的桥梁。功能按钮上面可以有文字,或是和标签一样可以有图像,如果是文字样式的功能按钮,可以设定此文字的字形。
它的语法格式如下。
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-670.jpg?sign=1739937796-ykGU6hzDThuxhZzaIhPbso1UUsXQt3ou-0-91ec69778dbc2cc486f414e6657a832f)
Button( )方法的第一个参数是父对象,表示这个功能按钮将建立在哪一个窗口内。下列是Button( )方法内其他常用的options参数。
(1)borderwidth或bd:边界宽度默认是两个像素。
(2)bg或background:背景色彩。
(3)command:单击功能按钮时,执行此方法。
(4)cursor:当鼠标光标移至按钮上时的形状。
(5)fg或foreground:前景色彩。
(6)font:字形。
(7)height:高,单位是字符高。
(8)highlightbackground:当功能按钮取得焦点时的背景颜色。
(9)highlightcolor:当功能按钮取得焦点时的颜色。
(10)image:功能钮上的图像。
(11)justify:当有多行文字时,最后一行文字的对齐方式。
(12)padx:默认是1,可设置功能按钮与文字的间隔。
(13)pady:默认是1,可设置功能按钮的上下间距。
(14)relief:默认是relief=FLAT,可由此控制文字外框。
(15)state:默认是state=NORMAL,若设置为DISABLED则以灰阶显示功能按钮,表示暂时无法使用。
(16)text:功能按钮名称。
(17)underline:可以设置第几个文字有下画线,从0开始算起,默认是-1表示无下画线。
(18)width:宽,单位是字符宽。
(19)wraplength:限制每行的文字数,默认是0,表示只有“\n”才会换行。
程序实例ch4_1.py:当单击功能按钮时可以显示字符串“I love Python”,底色是浅黄色,字符串颜色是蓝色。
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-671.jpg?sign=1739937796-zfxH6wGmtkACSC5fMceGSGZjO4GKa4JK-0-d79c925164a44b10a72167e3cc3b5173)
执行结果
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-672.jpg?sign=1739937796-lft1WjD5HA6dl8pl2zs0W1YdZD8AY3hn-0-bc468c14a41782fe97ed89811917bd01)
上述程序的运行方式是在程序执行时第10行建立了一个不含属性的标签对象label,第12行建立一个功能按钮。单击“打印消息”按钮时,会启动msgShow函数,然后此函数会执行设置标签对象label的内容。过去我们学Label时,一次使用Label( )方法设置所有的属性,以后读者可以参考第5~8行的方式,分别设置属性内容。
我们在2-13节有学过config( )方法,也可以使用该节中的方法一次设置所有的Widget控件属性。
程序实例ch4_2.py:使用config( )方法取代第5~7行,重新设计程序实例ch4_1.py。
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-673.jpg?sign=1739937796-zuUu6PeT4zjbCELLIRzOcfp2psAJQ6Ul-0-8a283a47f3c556aa1293f496d3d08d45)
执行结果 与ch4_1.py相同。
程序实例ch4_3.py:扩充设计ch4_2.py,若单击“结束”按钮,窗口可以关闭。
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-674.jpg?sign=1739937796-7d4YcTWQ0H7lDh3QcP2iGm4mTr6NsyKy-0-390506a7e0eeb5c13443b227f356a7b6)
执行结果
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-675.jpg?sign=1739937796-BbYPrsOqxJJeo5p9bwAOlUqdF0cItD1G-0-01c3465e69817eb6f60195d008847cd5)
上述第11行的root.destroy可以关闭root窗口对象,同时程序结束。另一个常用的方法是quit,可以让Python Shell内执行的程序结束,但是root窗口则继续执行,后面会做实例说明。
程序实例ch4_4.py:重新设计ch2_23.py定时器程序设计,添加“结束”按钮,单击“结束”按钮则程序执行结束。
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-676.jpg?sign=1739937796-wEWcQ3ztcUdigurdvvEEfmSNNUwVxEeR-0-bf255bcef4afeb01fbd6497df28b0479)
执行结果
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-677.jpg?sign=1739937796-879Oc95EoZ2WY1Q6rLUfQOw2dWVqsLtQ-0-1e8ae812e7da00475e87eb0742e7f4fb)
程序实例ch4_5.py:在窗口右下角有三个按钮,单击Yellow按钮可以将窗口背景设为黄色,单击Blue按钮可以将窗口背景设为蓝色,单击Exit按钮可以结束程序。
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-678.jpg?sign=1739937796-5oDgeF0jtoX8ZY3gmGLYRtcqIAtO0OvW-0-026493a410b3bcfc9ccd4f35ac6fefd0)
执行结果
![](https://epubservercos.yuewen.com/EC6269/15477657104591006/epubprivate/OEBPS/Images/image-679.jpg?sign=1739937796-BLOsIyIxxJF1CPxrvAvBPzcBI067Q4n3-0-7e34d83820193a50850642a22be5bcbc)