视频讲解
视频讲解:资源包\Video\02\2.3 tkinter模块与ttk模块的比较.mp4
ttk模块是tkinter模块中一个非常重要的子模块,它相当于升级版的tkinter模块。虽然tkinter模块中已经含有较多的组件,但是这些组件样式比较简单,为了弥补这一缺点,tkinter模块后来引入了ttk子模块。
虽然ttk模块是tkinter模块的子模块,但是它们的差别还是比较大的,具体可以从以下三方面来对比。
☑ 组件的数量不同
ttk模块中共包含18个组件,其中有12个组件在tkinter模块中已经存在,这12个组件分别是Button(按钮)、Checkbutton(复选框)、Entry(文本框)、Frame(容器)、Label(标签)、LabelFrame(标签容器)、Menu(菜单)、PaneWindow(窗口布局管理)、Radiobutton(单选按钮)、Scale(数值范围)、Spinbox(含选择值的输入框)及Scrollbar(滚动条)组件。而其余6个组件是ttk模块独有的,它们分别是Combobox(组合框)、Notebook(选项卡)、Progressbar(进度条)、Separator(水平线)、Sizegrip(成长箱)和Treeview(目录树)。总的来说,tkinter模块中有的组件,ttk模块都有,反之则不然。
☑ 组件的风格不同
tkinter模块中的组件均采用Windows经典主题风格;而ttk模块中的组件均采用Windows默认主题风格。
☑ 为组件定义样式的方法不同
目前ttk模块中的组件兼容性不是很好,例如,tkinter模块为组件设置背景色(bg)、前景色(fg)等参数在ttk模块中并不支持。设置ttk模块中组件的样式可以使用ttk.Style类来实现。
添加ttk模块中的组件之前同样需要导入ttk模块,具体代码如下:
如果希望使用ttk模块中的组件样式覆盖tkinter模块中的组件样式,则需要通过以下方式导入:
下面通过两个实例来对比使用tkinter模块中的组件与使用ttk模块中的组件在代码及样式设置上的区别。
实例位置:资源包\Code\02\01
首先创建Python文件,将其命名为demo1.py,并且在该文件中导入tkinter模块,然后在demo1.py文件内创建窗口,最后添加Button组件并设置按钮内文字的字号为“14px”,背景颜色为“#00f5ff”。具体代码如下:
上述代码在窗口中添加了一个按钮,并设置其样式,运行效果如图2.4所示。
图2.4 tkinter模块使用示例
实例位置:资源包\Code\02\02
在窗口中添加一个ttk模块的Button组件,并且设置与实例2.1相同的样式。首先,创建Python文件,命名为demo2.py,然后在该文件中导入tkinter模块和ttk模块,最后添加组件并设置样式。具体代码如下:
其运行效果如图2.5所示。
图2.5 ttk模块使用示例
通过两个实例的对比,可以看到,设置tkinter模块中的组件的样式,可以直接在组件上添加“bg”“font”等参数,而在ttk模块中添加组件样式时,需要通过Style对象添加。