Tkinter库的学习记录10-Message与Messagebox

10、Message与Messagebox

主要讲解消息Message和系统内建的8个消息对话框Messagebox。

10-1 Message

10-1-1 Message的基本概念

Widget控件中的Message主要是可以显示短消息,它的功能与Label类似,但是使用起来更灵活,可自动分行。对于一些不想再做进一步编辑的短文,可以使用Message显示。Message的构造方法如下。

python 复制代码
Message(父对象, options)

参数一:同上

其它option参数():

(1) anchor:如果空间大于所需时,控制消息的位置,默认是CENTER(居中)

Literal'nw', 'n', 'ne', 'w', 'center', 'e', 'sw', 's', 'se',表示东南西北,

注意使用小写anchor="se",使用大写anchor=SE

(2) aspect:控件宽度与高度比,默认是150%。

(3) bg或background:背景色彩。

(4) bitmap:使用默认位图当作Message内容。

系统默认的图标:error、hourglass、info、questhead、question、warning、gray12、gray25,gray50、gray75。

(5) cursor:当鼠标光标在Message上方时的外形。

(6) ffg或foreground:字形色彩。

(7) font:可选择字形、字形样式与大小。

(8) height:Message高度,单位是字符。

(9) image:Message以图像方式呈现。

(10) justify:存在多方文本时最后一行的对齐方式,可取值有LEFT / CNETER / RIGHT(靠左/居中/靠右),默认是居中对齐。

(11) padx/pady:Message文字与边框的间距,单位是像素。.

padx可以设置标签文字左右边界与标签区间的x轴间距,pady可以设置标签文字上下

(12) relief:默认是relief=FLAT,可由此控制文字的外框。

(13) text:Message内容,如果有"\n" 则可输入多行文字。

(14) textvariable:可以设置Message以变量方式显示。

(15) underline:可以设置第几个文字有下画线,从0开始算起,默认是-1,表示无下画线。

(16) width:Message宽度,单位是字符

(17) wraplength:文本到多少宽度后换行,单位是像素。

下面程序实例:Message的基本应用。

python 复制代码
from tkinter import *

root = Tk()
root.title("ch10_1")

myText = "2026年6月,小明一个人顶了车票和机票,开始了他的西藏之旅。"
msg = Message(root, bg="yellow", text=myText, font="times 12 italic")
msg.pack(padx=10, pady=10)

root.mainloop()

执行结果

10-1-2 使用字符串变量处理text参数

本节以实例直接介绍。

下面程序实例:以字符串变量方式处理Message()内的text。

python 复制代码
from tkinter import *

root = Tk()
root.title("ch10_2")

var = StringVar()
msg = Message(root, textvariable=var, relief=RAISED)
var.set("2026年6月,小明一个人顶了车票和机票,开始了他的西藏之旅。")
msg.pack(padx=10, pady=10)

root.mainloop()

执行结果

扩充上面实例,将背景设为黄色。

python 复制代码
from tkinter import *

root = Tk()
root.title("ch10_3")

var = StringVar()
msg = Message(root, textvariable=var, relief=RAISED)
var.set("2026年6月,小明一个人顶了车票和机票,开始了他的西藏之旅。")
msg.config(bg="yellow")
msg.pack(padx=10, pady=10)

root.mainloop()

执行结果

10-2 Messagebox

Python中的tkinter模块内有Messagebox模块,提供了8个对话框,这些对话框可以应用在不同场合,本节将做说明。

(1) showinfo(title, message, options):显示一般提示消息。

(2) showwraning(title, message, options):显示警告消息。

(3) showerror(title, message, options):显示警告消息。

(4) askquestion(title, message, options):显示问询消息。若单击"是"按钮会传回"yes",若单击"否"按钮会传回"no"。

(5) askokcancel(title, message, options):显示确定或取消消息。若单击"确定"按钮会传回True,若单击"取消"按钮会传回False。

(6) askyesno(title, message, options):显示"是或否"消息。若单击"是"按钮会传回True,若单击"否"按钮会传回False。

(7) askyesnocancel(title, message, options):显示"是或否或取消"消息。若单击"是"按钮会传回True,若单击"否"按钮会传回False,若单击"取消"按钮会传回None。

(8) askretrycancel(title, message, options):显示"重试或取消"消息。若单击"重试"按钮会传回True,若单击"取消"按钮会传回False。

上述对话框方法内的参数大致相同,title是对话框的名称,message是对话框内的文字,options是选择性参数,可能值有下列三种。

(1) default(constant):默认按钮是OK(确定)、Yes(是)、Retry(重试)在前面,也可更改此设定。

(2) icon(constant):可设定所显示的图标,有INFO、ERROR、QUESTION、WRANNING 4种图标可以设置。

(3) parent(widget):指出当对话框关闭时,焦点窗口将返回此父窗口。

最后要留意的是上述对话框是放在tkinter模块内message模块下,所以若是要使用这些默认的对话框需要在程序开头增加下列导入语句。

from tkinter import message

下面程序实例:对话框设计的基本应用。

python 复制代码
from tkinter import *
from tkinter import messagebox

def myMsg():
    messagebox.showinfo('My Message Box', 'Python Tkinter学习')

root = Tk()
root.title("ch10_4")
root.geometry("300x160")

Button(root, text="Good Moring", command=myMsg).pack()
root.mainloop()

执行结果

使用Messagebox时,可以很容易建立和用户之间的对话,当用户单击按钮时,所响应的内容虽然已经说明过了,但是下面还是以设计程序行演示出用户单击功能按钮时所传回的信息。

下面程序实例:设计两个按钮,当单击按钮时会弹出对话框,当用户有响应时,在Python Shell窗口中列出所响应的内容。

python 复制代码
from tkinter import *
from tkinter import messagebox

def myMsg1():
    ret = messagebox.askretrycancel("Test1", "安装失败,再试一次?")
    print("安装失败", ret)

def myMsg2():
    ret = messagebox.askyesnocancel("Test2", "编辑完成,是或否或取消")
    print("编辑完成", ret)

root = Tk()
root.title("ch10_5")
root.geometry("300x160")

Button(root, text="安装失败", command=myMsg1).pack()
Button(root, text="逻辑完成", command=myMsg2).pack()
root.mainloop()

执行结果 下面是两个实测结果。

有了用户单击按钮的传回值,就可以针对返回值做更进一步的操作了。

相关推荐
吃饱了得干活1 小时前
别只会传 temperature!一文挖透 LangChain 模型配置:Profile、全参数与运行时动态覆盖
python·langchain
shuoyuanAI1 小时前
张家口专业的aigeo优化品牌找哪家
大数据·人工智能·python
卷无止境1 小时前
《Deep Analysis with Polars》进阶分析技巧——深入解读
后端·python
大博士.J1 小时前
视频号主体违规与认证上限?正确的解决方式
运维·python·自动化
Mr.朱鹏2 小时前
【FastAPI 全栈实战 | 第2篇】Pydantic 数据校验与响应模型 —— 让 Bug 死在请求进来的那一刻
人工智能·python·fastapi
Xiangchu_2 小时前
安徽硅胶厂的转型困局:从家电到汽车,卡在哪
经验分享·python·阿里云·eclipse·汽车·制造
CTA终结者2 小时前
近期AI量化工具推荐,围绕最难推进的环节选择
人工智能·python
谙忆2 小时前
Python 常用图像处理库速查:Pillow、OpenCV、rembg、pillow-simd 各擅长什么、怎么选
图像处理·python·pillow
敲代码的猴先生2 小时前
论文分享 | TensorAbuse:通过滥用TensorFlow API将AI模型转化为恶意软件
人工智能·python·语言模型·tensorflow·论文笔记