GUI中菜单

2021-01-17  本文已影响0人  Chaweys

#coding=utf-8
from tkinter.filedialog import *
from tkinter.colorchooser import *

class Application(Frame):
    def __init__(self,master):
        super().__init__(master)
        self.pack()
        self.createWidget()

    def createWidget(self):
        #创建菜单栏
        self.menubar=Menu(self)

        #在菜单栏创建各个子菜单
        self.menuFile=Menu(self.menubar)
        self.menuEdit=Menu(self.menubar)
        self.menuHelp=Menu(self.menubar)

        #将各个子菜单加入到菜单栏中
        self.menubar.add_cascade(label="文件(F)",menu=self.menuFile)
        self.menubar.add_cascade(label="编辑(E)",menu=self.menuEdit)
        self.menubar.add_cascade(label="帮助(H)",menu=self.menuHelp)

        #为各个子菜单添加菜单选项,当点击菜单时会有选项弹出,
        #accelerator="ctrl+f"表示添加的快捷键,如果真要实现快捷键的操作,需要与按键事件进行绑定
        self.menuFile.add_command(label="新建",accelerator="ctrl+f",command=self.test)
        self.menuFile.add_command(label="打开",accelerator="ctrl+o",command=self.test)
        self.menuFile.add_command(label="保存",accelerator="ctrl+s",command=self.test)
        self.menuFile.add_command(label="退出",accelerator="ctrl+w",command=self.test)
        #添加分割线
        self.menuFile.add_separator()


        #将主菜单栏添加到根窗口中
        self.master["menu"]=self.menubar


        #在菜单下方添加文本编辑区域
        self.text01=Text(self,width=350,height=300)
        self.text01.pack()



        #创建快捷菜单-上下文菜单-右键菜单栏
        self.menubar2=Menu(self)
        self.menubar2.add_command(label="背景颜色",command=self.openAskcolor)

        #对menubar2菜单栏创建子菜单:menubar3
        self.menubar3=Menu(self.menubar2,tearoff=0)
        self.menubar3.add_command(label="剪切")
        self.menubar3.add_command(label="复制")
        self.menubar3.add_command(label="粘贴")
        
        #将子菜单menubar3添加进主菜单栏menubar2中
        self.menubar2.add_cascade(label="编辑",menu=self.menubar3)


        #为文本编辑区域绑定鼠标右键事件,当点击鼠标右键触发调用方法self.test2
        self.text01.bind("<Button-3>",self.test2)


    #将菜单和事件的任意坐标位置联系起来,然后展示菜单
    def test2(self,event):
        self.menubar2.post(event.x_root,event.y_root)

    
    #对文本编辑区域设置背景色
    def openAskcolor(self):
        self.color=askcolor(color="green",title="颜色选择框")
        self.text01.config(bg=self.color[1])



    def test(self):
        pass


if __name__=="__main__":
    root=Tk()
    root.title("菜单")
    root.geometry("350x300+300+300")
    app=Application(root)
    root.mainloop()
菜单.png
菜单2.png
上一篇下一篇

猜你喜欢

热点阅读