python笔记(三十) tkinter(8) 下拉菜单

一.工具栏

from tkinter import *

root = Tk()

menubar = Menu(root)

def callback():
    pass

filemenu = Menu(menubar,tearoff=False)
filemenu.add_command(label='打开',command=callback)
filemenu.add_command(label='保存',command=callback)
filemenu.add_separator()
filemenu.add_command(label='退出',command=root.quit)
menubar.add_cascade(label='文件',menu=filemenu)

editmenu = Menu(menubar,tearoff='False')
editmenu.add_command(label="剪贴",command=callback)
editmenu.add_command(label="拷贝",command=callback)
editmenu.add_command(label="粘贴",command=callback)
menubar.add_cascade(label="编辑",menu=editmenu)

root.config(menu=menubar)

mainloop()

我们一开始要创建一个总的menu,最后将各个工具栏添加到这个menubar
第一个是filemenu,来自menubar,这个tearoff表示这个菜单是否能从这个工具栏中取下
最后在tearmenu中添加commandfilemenu.add_command(label='打开',command=callback)
separator表示分割线
最后表示这个filemenu是一个menubar的下拉菜单,要给menubar添加一个cascade

最后将这个总的menubar添加到root中,这是比其他组件多出来的一步root.config(menu=menubar)
在这里插入图片描述

二.右键下拉菜单

from tkinter import *

root = Tk()


menubar = Menu(root)

def callback():
    pass

menubar.add_command(label="撤销",command=callback)
menubar.add_command(label="重做",command=callback)


frame = Frame(root,width=512,height=512)
frame.pack()

def popup(event):
    menubar.post(event.x_root,event.y_root)

frame.bind("<Button-3>",popup)

mainloop()

这里做了一个框架,在这个框架里,我们和鼠标右键绑定,点击右键,munebar弹出

三.checkbutton和radiobutton显示在菜单中

from tkinter import *

root = Tk()

menubar = Menu(root)

def callback():
    pass

openVar = IntVar()
saveVar = IntVar()
quitVar = IntVar()

filemenu = Menu(menubar,tearoff=False)
filemenu.add_checkbutton(label='打开',command=callback,variable=openVar)
filemenu.add_checkbutton(label='保存',command=callback,variable=saveVar)
filemenu.add_separator()
filemenu.add_checkbutton(label='退出',command=root.quit,variable=quitVar)
menubar.add_cascade(label='文件',menu=filemenu)

editVar = IntVar()

editmenu = Menu(menubar,tearoff='False')
editmenu.add_radiobutton(label="剪贴",command=callback,variable=editVar,value=1)
editmenu.add_radiobutton(label="拷贝",command=callback,variable=editVar,value=2)
editmenu.add_radiobutton(label="粘贴",command=callback,variable=editVar,value=3)
menubar.add_cascade(label="编辑",menu=editmenu)

root.config(menu=menubar)

mainloop()

这里添加按钮是用filemenu.add_checkbutton,他在这个menu组件中添加一个`checkbutton

`在这里插入图片描述

四.在菜单一开始就显示选择OptionMenu

from tkinter import *

OPTIONS = [
    "c++",
    "c",
    "python"]

root = Tk()

variable = StringVar()
variable.set(OPTIONS[0])

w = OptionMenu(root,variable,*OPTIONS)
w.pack()


mainloop()

这里的菜单的显示要设置位SringVar变量,不设置这个变量,就无法在按钮上显示文字
*OPTIONS*是为了将列表的元素分开
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值