以下内容为自己的学习笔记,如须要转载,请申明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/2G…
本文大略 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(),输出设置的数值。
看看显示成果
拖动两头的滑块,把控件以后值拉到 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 参数来说太硬核了,不够灵便,所以不开展了。
看看显示成果
主题控件
Tkinter 框架提供了一部分反对切换主题外观的控件,这些控件蕴含在 tkinter.ttk 模块 (主题模块) 内,这些控件被称为主题控件。比方,后面介绍的那些根本控件,在主题模块里根本都有相应的主题版本可供使用,这就使得 tkinter 做进去的界面可观性进步了不少。
另外根本控件和主题控件的 API 根本相似,只有大量差别,所以能够轻松切换应用。
疾速切换到主题控件
如果遗留代码里应用的是根本控件,为了能应用主题控件来疾速笼罩,在导入库时能够参考应用通配符 import(*),这样就不须要大范畴批改代码了。
先看下假如的遗留代码,代码中只有个按钮 Button。
from tkinter import *
window = Tk()
btn = Button(
text="Click me!",
width=25
)
btn.pack()
window.mainloop()
显示成果是这样子
而后增加导入主题模块 ttk
from tkinter import *
from tkinter.ttk import *
window = Tk()
btn = Button(
text="Click me!",
width=25
)
btn.pack()
window.mainloop()
看看新的显示成果
看起来主题控件格调确实和根底控件有所不同,主题控件绝对更古代一些。
那么为什么呢?往下看。
切换主题
主题库既然反对切换主题,那么怎么切换到不同的主题?又有哪些主题可供选择呢?
不同的主题其实就别离对应不同的款式,而 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
下面代码调用 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 入门篇 丙》将在本公众号稍后推送,如果你对此教程有趣味或者想和我一起交换更多精彩内容,欢送关注我的微信公众号【englyf】,等着你哦!