以下内容为自己的学习笔记,如需求转载,请声明原文链接 微信大众号「englyf」mp.weixin.qq.com/s/8qaS8SDCc…


本文大约1685个字,阅读需花6分钟内容不多,
但也花了一些精力如要沟通,
欢迎关注我然后评论区留言
谢谢你的点赞收藏分享

这篇文章属于系列文章《Python 内置界面开发结构 Tkinter入门篇》的第二篇,上接《Python 内置界面开发结构 Tkinter入门篇 甲》,欢迎关注我的微信大众号「englyf」检查这个系列相关文章。

根本控件

上一篇里,介绍了部分根本控件,还有部分也需求持续介绍。

Scale 刻度条

上面经已介绍的那些控件在动态修正数值时,对于用户来说还是不太便利。为了更便利地修正数值,比如用户能够按住鼠标键直接拖动控件时,数值就会跟着变化,刻度条控件 Scale 就刚好能够实现这样的功用。

下面举个栗子,在主界面增加一个刻度条控件。

import tkinter as tk
window = tk.Tk()
scale = tk.Scale(
    master=window,
    orient=tk.VERTICAL,
    length=150,
    from_=0,
    to_=200
    )
scale.pack()
window.mainloop()

实例化控件 Scale,参数 orient 指定刻度条方向(VERTICAL 对应笔直方向,HORIZONTAL 对应水平方向),参数 length 设定控件长度(单位为像素), 参数 from_ 设置数值范围的最小值,参数 to 设置数值范围的最大值。

获取控件 Scale 的当时值,运用 get(),回来整数值或许浮点数。

设置控件 Scale 的当时值,运用 set(),输入设置的数值。

看看显现作用

Python 内置界面开发框架 Tkinter入门篇 乙

拖动中心的滑块,把控件当时值拉到168。

Listbox 列表

假如有很多类似的内容需求显现给用户,那么就合适用到列表控件 Listbox。控件 Listbox 用于显现单行文本项的列表,答应用户浏览列表内容,并且挑选一个或多个选项。

举个例子运用控件 Listbox 来显现花名单

import tkinter as tk
window = tk.Tk()
contents = ["贵爷", "蔡礼佛", "梁老师", "鸡毛", "胖子"]
listvar = tk.StringVar(value=contents)
listbox = tk.Listbox(
    window,
    bd=2,
    bg="#dddddd",
    listvariable=listvar
    )
listbox.grid()
contents.append("助班")
listvar.set(contents)
window.mainloop()

实例化控件 Listbox 时,也运用了一个便利快速操作内部数据的参数 listvariable,类似其它控件的 textvariable 参数,可是因为列表控快速切换到主题控件件内部管理的是文本列表,所以 listvariable 接收的量有必要是列表类型[]。先是直接创建一个列表量,然后传入 StringVar() 转换成特别格式回来,回来值 listvar 再赋给控件 Listbox 实例化的参数 listvariable。

在后边需求更新或读取列表控件内容时,直接调用 listvar.set() 或 listvar.get() 即可。

控件 Listbox 其实是有自带的接口能够操作内部数据的,可是相对于初始化 listvariable 参数来说太硬核了,不行灵敏,所以不展开了。

看看显现作用

Python 内置界面开发框架 Tkinter入门篇 乙

主题控件

Tkinter 结构供给了一部分支撑切换主题外观的控件,这些控件包含在 tkinter.ttk 模块(主题模块)内,这些控件被称为主题控件。比如,前面介绍的那些根本控件,在主题模块里根本都有相应的主题版别可供运用,这就使得 tkinter 做出来的界面可观性提高了不少。

别的根本控件和主题控件的 API 根本类似,只有少数差异,所以能够轻松切换运用。

快速切换到主题控件

假如留传代码里运用的是根本控件,为了能运用主题控件来快速覆盖,在导入库时能够参考运用通配符 import (*),这样就不需求大范围修正代码了。

先看下假定的留传代码,代码中只有个按钮 Button。

from tkinter import *
window = Tk()
btn = Button(
    text="Click me!",
    width=25
    )
btn.pack()
window.mainloop()

显现作用是这姿态

Python 内置界面开发框架 Tkinter入门篇 乙

然后增加导入主题模块 ttk

from tkinter import *
from tkinter.ttk import *
window = Tk()
btn = Button(
    text="Click me!",
    width=25
    )
btn.pack()
window.mainloop()

看看新的显现作用

Python 内置界面开发框架 Tkinter入门篇 乙

看起来主题控件风格的确和基础控件有所不同,主题控件相对更现代一些。

那么为什么呢?往下看。

切换主题

主题库已然支撑切换主题,那么怎样切换到不同的主题?又有哪些主题可供挑选呢?

不同的主题其实就分别对应不同的样式,而 tkinter.ttk 模块供给了 Style 类用于操作主题控件样式。

直接看下面的示例代码

from tkinter import *
from tkinter.ttk import *
window = Tk()
style = Style()
print(style.theme_names())
print(style.theme_use())
btn = Button(
    text="Click me!",
    width=25
    )
btn.pack()
window.mainloop()

履行的程序界面和上面的无异,可是命令终端会有输出

(.venv) D:\englyf\python>python main.py
('winnative', 'clam', 'alt', 'default', 'classic', 'vista', 'xpnative')
vista

Python 内置界面开发框架 Tkinter入门篇 乙

上面代码调用 Style 类实例的 theme_names() 回来 tkinter 支撑的所有主题类型(‘winnative’, ‘clam’, ‘alt’, ‘default’, ‘classic’, ‘vista’, ‘xpnative’)。

调用 theme_use() 输入为空,回来默许的主题类型,这里是 vista。假如需求改变主题类型,能够调用 theme_use() 输入对应的主题姓名即可。假如设置主题类型为 winnative,你会留意到控件的风格就变得和根本控件的共同,看来还是 vista 更现代一些。

然后,简单介绍一下部分其它的主题控件,比如进度条 Progressbar。

Progressbar 进度条

有些情况下,某些操作比较耗时间,而用户也不知道这操作到底还要花多长时间时,你就有必要告知用户剩余的操作时间了。为了形象体现出剩余时间或许已履行进度,能够运用控件 Progressbar。

下面举个栗子,在主界面增加一个进度条控件。

import tkinter as tk
import tkinter.ttk as ttk
window = tk.Tk()
progressbar = ttk.Progressbar(
    master=window,
    maximum=50,
    value=50
    )
progressbar.pack()
window.mainloop()

看看显现作用

Python 内置界面开发框架 Tkinter入门篇 乙


因为篇幅受限,本系列教程还未结束,下一篇《Python 内置界面开发结构 Tkinter入门篇 丙》将在本大众号稍后推送,假如你对此教程有兴趣或许想和我一起沟通更多精彩内容,欢迎关注我的微信大众号【englyf】,等着你哦!