在跑程序,跑脚本的时候,总是希望可以在某些时刻,对代码运行状态进行了解。
也就是在特定时刻能给予反馈,能够多一点交互,比如进度条、各种消息弹窗(警告、报错、选择是或否等等)
于是,这个关于tkinter一些小模块的使用笔记来了
消息框(messagebox)
from tkinter.messagebox import showinfo, showerror, showwarning, askokcancel, askquestion, askyesno, askyesnocancel, askretrycancel
各函数对应的具体说明:
函数 | 说明 |
---|---|
showinfo() | 展示信息 [若点确定,返回 ‘ok’ ,直接关闭返回 ‘’ ] |
showerror() | “错误”弹窗 [若点确定,返回 ‘ok’ ,直接关闭返回 ‘’ ] |
showwarning() | “警告”弹窗 [若点确定,返回 ‘ok’ ,直接关闭返回 ‘’ ] |
askokcancel() | 选择“是”或“取消”;返回True或None |
askquestion() | 选择“是”或“否”;返回yes或no【str】 |
askyesno() | 选择“是”或“否”;返回True或False |
askyesnocancel() | 选择“是”、“否”、“取消”;返回True、False、None |
askretrycancel() | 选择“重试”或“取消”;返回True或None |
所有窗口都有两个基本参数----title、message。
一般使用已经基本够用了,如果要“私人定制”的话,那可以研究详细参数。
参数 | 说明 |
---|---|
title | 标题 |
message | 消息主体 |
示例:
1. showinfo(title, message)
代码
showinfo('这是标题', '这里是内容')
图例
2. showerror(title, message)
代码
showerror('错误', '这里是内容')
图例
3. showwarning(title, message)
代码
showwarning('警告', '这里是内容')
图例
4. askokcancel(title, message)
代码
askokcancel('???', '是否选择暴富?')
图例
5.askquestion(title, message)
代码
askquestion('???', '是否选择暴富?')
图例
6. askyesno(title, message)
代码
askyesno('???', '是否选择暴富?')
图例
7. askyesnocancel(title, message)
代码
askyesnocancel('???', '是否选择暴富?')
图例
8. askretrycancel()(title, message)
代码
askretrycancel('???', '暴富失败,是否重新暴富?')
图例
代码行过程:
进度条(Progressbar)
建议参考这篇超级优秀的博文【点击蓝色字跳转】我这里只是整理了一下简单实用的方法,要了解更多还是去那里
构造方法:
from tkinter.ttk import Progressbar
p_bar = Progressbar(父对象, options, ...)
options 相关参数:
参数 | 含义 |
---|---|
length | 进度条的长度 默认是100像素 |
mode | 可以有两种模式,下面作介绍 |
maximum | 进度条的最大值 默认是100像素 |
name | 进度条的名称,供程序参考引用 |
orient | 进度条的方向,可以是HORIZONTAL(默认) 或者是 VERTICAL |
value | 进度条的目前值 |
variable | 记录进度条目前的进度值 |
- mode 对应参数
参数 | 说明 |
---|---|
determinate | (默认)指针由起点移到终点 |
indeterminate | 指针在起点与终点间来回移动(未知问题规模时使用) |
使用示例
from tkinter import Tk, Button
from tkinter.ttk import Progressbar
from time import sleep
def run():
for i in range(400):
p_bar['value'] = i + 1
# 更新进度条值
root.update()
sleep(.05)
root = Tk()
root.geometry('400x80')
p_bar = Progressbar(root, length=350)
p_bar.pack(pady=10)
# 设置进度条最大值
p_bar['maximum'] = 400
# 设置进度条当前值(此处为清零/设初值为零)
p_bar['value'] = 0
Button(root, text='走你', command=run).pack()
root.mainloop()