Python全系列 教程
3567个小节阅读:5930.6k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
GUI程序通常都有菜单,方便用户的交互。我们一般将菜单分为两种:
主菜单
主菜单通常位于GUI程序上方。例如:
快捷菜单(上下文菜单)
通过鼠标右键单击某个组件对象而弹出的菜单,一般是与该组件相关的操作。
主菜单包含:文件、编辑、帮助等,位于GUI窗口的上面。创建主菜单一般有如下4步:
创建主菜单栏对象
xxxxxxxxxx
menubar = tk.Menu(root)
创建菜单,并添加到主菜单栏对象
xxxxxxxxxx
file_menu = tk.Menu(menubar)
menubar.add_cascade(label=”文件”,menu=file_menu)
添加菜单项到2步中的菜单
xxxxxxxxxx
file_menu.add_command(label=”打开”)
file_menu.add_command(label=”保存”,accelerator=”^p” command=mySaveFile)
file_menu.add_separator()
file_menu.add_command(label=”退出”)
将主菜单栏添加到根窗口
xxxxxxxxxx
root[“menu”]=menubar
【示例】记事本软件的主菜单
xxxxxxxxxx
"""开发记事本软件的菜单
"""
from tkinter.filedialog import *
from tkinter import *
class Application(Frame):
def __init__(self, master=None):
super().__init__(master) # super()代表的是父类的定义,而不是父类对象
self.master = master
self.textpad = None # textpad表示Text文本框对象
self.pack()
self.createWidget()
def createWidget(self):
# 创建主菜单栏
menubar = Menu(root)
# 创建子菜单
menuFile = Menu(menubar)
menuEdit = Menu(menubar)
menuHelp = Menu(menubar)
# 将子菜单加入到主菜单栏
menubar.add_cascade(label="文件(F)", menu=menuFile)
menubar.add_cascade(label="编辑(E)", menu=menuEdit)
menubar.add_cascade(label="帮助(H)", menu=menuHelp)
# 添加菜单项
menuFile.add_command(label="新建", accelerator="ctrl+n", command=self.test)
menuFile.add_command(label="打开", accelerator="ctrl+o", command=self.test)
menuFile.add_command(label="保存", accelerator="ctrl+s",command=self.test)
menuFile.add_separator() # 添加分割线
menuFile.add_command(label="退出", accelerator="ctrl+q",command=self.test)
# 将主菜单栏加到根窗口
root["menu"] = menubar
#文本编辑区
self.textpad = Text(root, width=50, height=30)
self.textpad.pack()
def test(self):
pass
if __name__ == '__main__':
root = Tk()
root.geometry("450x300+200+300")
root.title("百战程序员的简易记事本")
app = Application(master=root)
root.mainloop()
运行结果:
快捷菜单(上下文菜单)是通过鼠标右键单击组件而弹出的菜单,一般是和这个组件相关的操作,比如:剪切、复制、粘贴、属性等。创建快捷菜单步骤如下:
创建菜单
xxxxxxxxxx
menubar = tk.Menu(root)
menubar.add_command(label=”字体”)
绑定鼠标右键单击事件
xxxxxxxxxx
def test(event):
menubar.post(event.x_root,event.y_root) #在鼠标右键单击坐标处显示菜单
root.bind(“<Button-3>”,test)
【示例】为记事本程序增加上下文菜单
xxxxxxxxxx
#coding=utf-8
from tkinter import *
from tkinter.colorchooser import *
from tkinter.filedialog import *
root = Tk();root.geometry("400x400")
def openAskColor():
s1 = askcolor(color="red", title="选择背景色")
root.config(bg=s1[1])
#创建快捷菜单
menubar2 = Menu(root)
menubar2.add_command(label="颜色",command=openAskColor)
menuedit = Menu(menubar2,tearoff=0)
menuedit.add_command(label="剪切")
menuedit.add_command(label="复制")
menuedit.add_command(label="粘贴")
menubar2.add_cascade(label="编辑",menu=menuedit)
def test(event):
#菜单在鼠标右键单击的坐标处显示
menubar2.post(event.x_root,event.y_root)
#编辑区
w1 = Text(root,width=50,height=30)
w1.pack()
w1.bind("" ,test)
root.mainloop()
运行结果: