Tkinter按钮部件的花样呈现|先生的Tkinter教程(2)

在上一篇文章《创建第一个Tkinter图形界面|先生的Tkinter教程(1)》中,我们学习并创建了一个最基本的Tkinter图形界面程序。这个图形界面程序中只有一个简单的按钮部件,今天我们就继续来了解Tkinter的按钮部件。

一、最基础的按钮

在Tkinter中,按钮是通过实例化Button()类来创建的,然后通过其pack()方法,将按钮打包到按钮的父部件上。

运行上述代码,我们将会得到一个简陋的图形界面程序,如下图所示:

在上面的代码中,我们在实例化Button()类之后,又调用了它的pack()方法。pack()方法是一个小部件的通用方法,用于将实例化的小部件打包到其父部件中,如果不调用这个方法,实例化的小部件将不会显示。

运行上述代码,我们将只会看到一个空的窗口,按钮并不会出现在窗口中。

二、为按钮添加图片和文字

添加按钮文字

在创建了最基础的按钮之后,我们继续往按钮中添加一些东西。作为一个按钮,描述性的文字是必须要具备的,所以我们使用Button()类的text属性先为按钮添加文字:

运行上述代码,我们将会得到一个如下图所示的图形界面:

添加按钮图片

有时候,我们想让按钮更加地美观,于是在按钮的文字前加上一个小图片,这在Tkinter中借助于Button()类的image属性也是可以实现的。而在使用图片之前,我们需要实例化一个Tkinter的图像,这是通过PhotoImage()类来实现的,所以代码如下所示:

如果运行上述代码,会发现,我们的按钮中只有一个图片,文字却消失了,如下图所示:

这是因为在按钮中,图片的优先级高于文字,默认情况下显示优先级最高的那个属性。如果需要两个属性都显示,那么我们还需要设置另一个属性——compound,这个复合属性用于将图像和文本组合在同一个按钮中,接受一个常量作为图像放置的位置:

现在运行上述代码,可以发现按钮中图像和文字都已经显示出来了。如下图所示:

而且图像位于按钮左侧,因为在这里,我们设置compound属性的值为tk.LEFT,此外,我们还能设置其值为CENTER、BOTTOM、RIGHT和TOP,分别表示图像放置在中央、底部、右侧和顶部。大家可以自行试一试。

三、控制按钮的排列

在前面的代码中,我们都通过pack()方法对按钮进行打包,除了直接进行调用,我们还能为pack()方法指定一些属性,用来控制按钮的位置和排列。pack()方法支持很多属性的设置,比如:

  • before:在打包某一个小部件之前打包;
  • expand:如果父级部件增大,也随之增大;
  • fill:如果小部件增大则填充小部件;
  • ipadx:在X轴方向上填充内边距;
  • ipady:在Y轴方向上填充内边距;
  • padx:在X轴方向填充;
  • pady:在Y轴方向填充;
  • side:在指定位置添加小部件;

下面我们就使用其中几个属性来设置一个新的按钮:

运行上述代码,可以发现,窗口中的按钮在X轴方向有10个像素的外边距,在Y轴方向有50个像素的外边距,拖动窗口的大小,按钮的大小还会随之变化。如下图所示:

四、设置按钮的浮雕样式

上面我们创建的按钮都是一个形态的,其实在Tkinter中默认可以对按钮设置各种浮雕的样式。其通过Button()类的relief属性来实现,具体看代码:

运行代码,可以发现窗口中的5个按钮的样式各不一样,这都是依靠relief属性指定浮雕的样式实现的。如下图所示:

五、绑定函数和禁用按钮

作为按钮最常用的功能,怎么能少了对按钮绑定一个函数,以及禁用按钮呢。在上一篇文章中,我们就通过Button()类的command属性选项,使用了按钮的绑定函数功能,点击按钮时将文本打印到控制台。

同时,Button的启用和禁用状态,都是通过其state属性选项来控制的。如果我们在实例化Button()类的时候就指定其state属性选项为tk.tk.DISABLED,那么显示出来的按钮就是禁用状态的:

运行上述代码,得到一个被禁用的按钮:

如果我们需要通过命令来动态禁用按钮,那么就需要从Button()的config()方法中进行配置,所以完整的代码如下所示:

运行上述代码,我们创建的按钮在初始状态下是可点击的,当我们点击它之后,它的状态就变成了禁用状态了:

最后

文章代码地址已公布在知识星球,如有疑问,欢迎加入州的先生知识星球交流。

猜你也喜欢

发表评论

电子邮件地址不会被公开。

加入州的先生知识星球,及时交流解惑!
扫码支持