[英]tkinter message box calling function
我想在我的消息框中显示标签的标题,该消息框将显示为“您已选择项目”。 我怎样才能像使用保存和退出一样使用所有这些功能呢?
from tkinter import*
import tkinter.messagebox
root = Tk()
def func(label):
tkinter.messagebox.askquestion("Information", "you have selected: ", label )
mymenu = Menu(root)
root.config(menu = mymenu)
submenu = Menu(mymenu)
mymenu.add_cascade(label = "file", menu = submenu)
submenu.add_command(label ="project", command = func)
submenu.add_command(label = "save", command = func)
submenu.add_separator()
submenu.add_command(label ="exit", command = func)
root.mainloop()
您可以使用lambda函数(用于submenu命令)和字符串格式来实现 :
from tkinter import *
import tkinter.messagebox
root = Tk()
def func(label):
tkinter.messagebox.askquestion("Information", "you have selected: {}".format(label))
mymenu = Menu(root)
root.config(menu = mymenu)
submenu = Menu(mymenu)
mymenu.add_cascade(label="file", menu=submenu)
submenu.add_command(label="project", command=lambda: func("project"))
submenu.add_command(label= "save", command=lambda: func("save"))
submenu.add_separator()
submenu.add_command(label="exit", command=lambda: func("exit"))
root.mainloop()
lambda函数用于将与子菜单项相对应的label参数传递给func
。
对于消息框,语法为tkinter.messagebox.askquestion(<title>, <message>)
,因此您需要以字符串格式将“ label”参数插入消息中: "you have selected: {}".format(label)
, {}
被label
变量的内容替换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.