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()

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

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

相关推荐
wangchunyu1146 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
2501_944521597 小时前
Immer 跨端三方库仓颉适配全流程
python·eclipse·django
信誓旦旦的程序猿7 小时前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
2501_944521597 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
Patrick在香港8 小时前
同一行 strftime,两台机器跑出两种日期
python·datetime·时区·locale·日期处理
2601_967987378 小时前
用Python+OpenCV+YOLO写个游戏脚本:从自动瞄准到自动采集的保姆级教程
python·opencv·yolo·目标检测·游戏自动化
meiying88388 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
人工智能导论实践课8 小时前
【GUI桌面开发3】PyCharm配置外部工具
ide·python·pycharm
一千柯橘8 小时前
LangChain 的实时输出处理: stream_events 和 Streaming
python·langchain·agent
贾公子8 小时前
图片 AIGC 检测接入实战——URL 与 Base64 的取舍、体积校验与「你送过去的可能不是那张图」
python·aigc