立即学习:https://edu.csdn.net/course/play/19711/343119?utm_source=blogtoedu
1.菜单menu:
1)弹出式菜单,类似与电脑桌面右击弹出的菜单成为弹出菜单;
2)窗体式菜单:类似于word上面的菜单栏
2.窗体菜单创建的步骤
1)创建一个菜单栏
elf.menu = tkinter.Menu(self.root)#创建菜单
2)在菜单栏中创建子菜单
self.file_menu = tkinter.Menu(self.menu,#主菜单tearoff = False)
3)给子菜单添加菜单项及设置菜单项的名字和需要绑定的事件,
注:关闭窗体的事件可以直接调用self.root.quit()来实现
self.file_menu.add_command(label = "打开",#设置子菜单项的名字command = self.file_handle_1#设置子菜单项需要执行的事件)self.file_menu.add_command(label = "保存",#设置菜单项的名字command = self.file_handle_2#设置子菜单项需要执行的事件)self.file_menu.add_separator()#添加子菜单项分割线self.file_menu.add_command(label = "关闭",#设置子菜单项的名字command = self.root.quit#设置子菜单项需要执行的事件
4)向菜单栏或者主菜单中添加子菜单
#---------------------将子菜单添加到主菜单中----------------------
self.menu.add_cascade(label = "文件",#为子菜单设置名字menu = self.file_menu#将子菜单添加到主菜单中,需要添加的子菜单)
5)在窗体中显示主菜单或者说是菜单栏
self.root.config(menu = self.menu)
3.弹出菜单的创建步骤
1)创建子菜单:这步与窗体菜单的创建子菜单是一样的
self.popmenu = tkinter.Menu(self.root,tearoff = False)#创建菜单
2)给子菜单添加菜单项及菜单项的命名、事件的绑定
self.popmenu.add_command(label = "我是弹出菜单",#弹出菜单项的名字command = self.pop_handle_1#弹出菜单项绑定的事件)
3)定义在窗体中显示弹出窗体的事件(post)
#--------------弹出菜单事件---------------------
def pop_menu_handle(self,event):self.popmenu.post(event.x_root,event.y_root)#设置弹出的位置,这是跟随着事件发生的位置
4)给窗体绑定弹出菜单弹出的事件
self.root.bind("<Button-3>",self.pop_menu_handle)#将弹出菜单作为一个事件绑定给窗体
注:菜单项事件的绑定是通过创建菜单项“command=事件”来进行绑定的
4.完整代码
import tkinter#导入创建窗体的相关模块class Mainwindow():#创建窗口类def __init__(self):self.root = tkinter.Tk()#创建主体窗口self.root.title('linlianqin')#定义窗体的名字self.root.geometry('500x500')#定义窗体的初始大小self.root.maxsize(1200,1200)#设置窗口可以显示的最大尺寸self.create_menu()self.pop_menu()self.root.bind("<Button-3>",self.pop_menu_handle)#将弹出菜单作为一个事件绑定给窗体self.root.mainloop()#显示窗口,这个代码一定要放在所有窗口设置的后面#------------创建窗体菜单------------------def create_menu(self):self.menu = tkinter.Menu(self.root)#创建菜单#-------------------------------------#创建一个子菜单1------------------------------------self.file_menu = tkinter.Menu(self.menu,#主菜单tearoff = False)#----------------创建子菜单的菜单项1-----------------self.file_menu.add_command(label = "打开",#设置子菜单项的名字command = self.file_handle_1#设置子菜单项需要执行的事件)self.file_menu.add_command(label = "保存",#设置菜单项的名字command = self.file_handle_2#设置子菜单项需要执行的事件)self.file_menu.add_separator()#添加子菜单项分割线self.file_menu.add_command(label = "关闭",#设置子菜单项的名字command = self.root.quit#设置子菜单项需要执行的事件)#关闭窗口的事件可以直接调用内置的函数#---------------------将子菜单添加到主菜单中----------------------self.menu.add_cascade(label = "文件",#为子菜单设置名字menu = self.file_menu#将子菜单添加到主菜单中,需要添加的子菜单)#---------------------------------# 创建一个子菜单2------------------------------self.edit_menu = tkinter.Menu(self.menu, #主菜单tearoff=False)#----------------创建子菜单的菜单项2-----------------self.edit_menu.add_command(label = "剪切",#设置子菜单项的名字command = self.edit_handle_1#设置子菜单项需要执行的事件)self.edit_menu.add_command(label = "复制",#设置菜单项的名字command = self.edit_handle_2#设置子菜单项需要执行的事件)self.edit_menu.add_separator()#添加子菜单项分割线self.edit_menu.add_command(label = "粘贴",#设置子菜单项的名字command = self.edit_handle_2#设置子菜单项需要执行的事件)#---------------------将子菜单添加到主菜单中----------------------self.menu.add_cascade(label = "编辑",#为子菜单设置名字menu = self.edit_menu#将子菜单添加到主菜单中,需要添加的子菜单)#---------------------主菜单的显示------------------self.root.config(menu = self.menu)#-------创建弹出菜单:弹出菜单就相当于一个子菜单一样,只不过是需要右击才会出现的,对于窗体来说,弹出菜单相当于一个事件----------------------def pop_menu(self):self.popmenu = tkinter.Menu(self.root,tearoff = False)#创建菜单self.popmenu.add_command(label = "我是弹出菜单",#弹出菜单项的名字command = self.pop_handle_1#弹出菜单项绑定的事件)self.popmenu.add_command(label = "linlianqin",#弹出菜单项的名字command = self.pop_handle_2#弹出菜单项绑定的事件)#---------------------窗体菜单的处理事件------------------------def file_handle_1(self):passdef file_handle_2(self):passdef edit_handle_1(self):passdef edit_handle_2(self):pass#---------------------弹出菜单的处理事件------------------------def pop_handle_1(self):passdef pop_handle_2(self):pass#--------------弹出菜单事件---------------------def pop_menu_handle(self,event):self.popmenu.post(event.x_root,event.y_root)#设置弹出的位置,这是跟随着事件发生的位置if __name__ == '__main__':Mainwindow()#将窗体类实例化