Python的GUI编程(九)Menu(菜单)OptionMenu(为可选菜单)
2018-01-18 20:23
751 查看
在用户界面程序中, 菜单以图标和文字的方式展示可用选项. 用鼠标选择一个选项, 程序的某个行为既被触发. 这种行为通常包括比如 打开/保存文件, 退出程序 等功能.
上下文菜单是一种根据用户当前所在程序位置(上下文), 动态生成的菜单.
简单程序:
add_command (options)方法:将菜单项添加到菜单中。
上面菜单无下拉,修改:
tearoff属性:通常情况下,菜单可以被撕掉,第一个位置(位置0)在选择列表中被删除元素占据,并且额外的选择从位置1开始。如果您设置了tearoff=0,菜单将不会有一个tearoff特性,并且选择将从位置0开始添加。
向菜单中添加Checkbutton项
add_checkbutton( options )方法:创建一个检查按钮菜单项。(多选)
向菜单 中添加Radiobutton项
将上面的add_checkbutton()函数改为add_radiobutton()函数即可,
修改一下:
add_separator()方法:在菜单中添加分隔线。
以上是下拉菜单,接下来是右拉菜单。
OptionMenu
OptionMenu类是一个辅助类,它用来创建弹出菜单,并且有一恶搞按钮显示它。它非常类似Windows上的下拉列表插件。
如果要获取当前选项菜单的值,你需要把它和一个Tkinter变量联系起来。
kw = {"borderwidth": 2, "textvariable": variable,
"indicatoron": 1, "relief": RAISED, "anchor": "c",
"highlightthickness": 2}
修改不设初始值:
from Tkinter import *
root = Tk()
v = StringVar(root)
#创建一个OptionMenu控件
om = OptionMenu(root,
v,
'Python',
'PHP',
'CPP',
'C',
'Java',
'JavaScript',
'VBScript'
)
om.pack()
root.mainloop()
#OptionMenu的创建需要两个必要的参数,与当前值绑定的变量,通常为一StringVar类型;另一
#个是提供可选的内容列表,由OptionMenu的变参数指定。
设置OptionMenu的显示值
#当OptionMenu与变量绑定后,直接使用变量赋值的方法即可改变当前的值
若想获得每次点击的选项,用bind绑定函数
from Tkinter import *
root = Tk()
v = StringVar(root)
def Print(event):
print v.get()
#创建一个OptionMenu控件
v.set('Language')
om = OptionMenu(root,
v,
'Python',
'PHP',
'CPP',
'C',
'Java',
'JavaScript',
'VBScript'
)
om.pack()
# 添加事件函数
om.bind('<Button-1>',Print)
root.mainloop()
上下文菜单是一种根据用户当前所在程序位置(上下文), 动态生成的菜单.
简单程序:
from Tkinter import * root=Tk() root.geometry('300x100') M=Menu(root) #创建主菜单 for i in ['File','View','Edit','Tools','Help']: M.add_command(label=i) # 将root的menu属性设置为M root['menu']=M root.mainloop()
add_command (options)方法:将菜单项添加到菜单中。
上面菜单无下拉,修改:
from Tkinter import * root = Tk() def CallOn(): print 'Hello' menubar = Menu(root) content=[['New File','Open File','Save'],['Undo','Copy','Cut']] Main=['File','Edit'] for i in range(len(Main)): #新建一个空的菜单,将menubar的menu属性指定为filemenu,即filemenu为menubar的下拉菜单 filemenu = Menu(menubar, tearoff=0) for k in content[i]: filemenu.add_command(label = k,command = CallOn) menubar.add_cascade(label=Main[i], menu=filemenu) root['menu'] = menubar root.mainloop()
tearoff属性:通常情况下,菜单可以被撕掉,第一个位置(位置0)在选择列表中被删除元素占据,并且额外的选择从位置1开始。如果您设置了tearoff=0,菜单将不会有一个tearoff特性,并且选择将从位置0开始添加。
add_cascade()方法:通过将给定的菜单与父菜单相关联,创建一个新的分层菜单。
向菜单中添加Checkbutton项
# 程序运行,使用了Checkbutton,并通过printItem将每个Checkbutton在当前值打印出来。 from Tkinter import * root = Tk() # 每次打印出各个变量的当前值 def printItem(): print 'Python = ', vPython.get() print 'PHP = ', vPHP.get() print 'CPP = ', vCPP.get() print 'C = ', vC.get() print 'Java = ', vJava.get() print 'JavaScript = ', vJavaScript.get() print 'VBScript = ', vVBScript.get() menubar = Menu(root) vPython = StringVar() vPHP = StringVar() vCPP = StringVar() vC = StringVar() vJava = StringVar() vJavaScript = StringVar() vVBScript = StringVar() filemenu = Menu(menubar, tearoff=0) # item()方法把字典中每对key和value组成一个元组,并把这些元组放在列表中返回。 for k, v in {'Python': vPython, daf4 'PHP': vPHP, 'CPP': vCPP, 'C': vC, 'Java': vJava, 'JavaScript': vJavaScript, 'VBScript': vVBScript}.items(): # 绑定变量与回调函数 filemenu.add_checkbutton(label=k, command=printItem, variable=v) # 将menubar的menu属性指定为filemenu,即filemenu为menubar的下拉菜单 menubar.add_cascade(label='Language', menu=filemenu) root['menu'] = menubar root.mainloop()
add_checkbutton( options )方法:创建一个检查按钮菜单项。(多选)
向菜单 中添加Radiobutton项
将上面的add_checkbutton()函数改为add_radiobutton()函数即可,
修改一下:
from Tkinter import * root = Tk() menubar = Menu(root) vLang = StringVar() #每次打印出当前选中的语言 def printItem(): print 'vLang = ',vLang.get() Language=['Language','Program'] L=[['Chinese','English','Japanese'],['Python','PHP','CPP','C','Java','JavaScript','VBScript']] for i in range(len(Language)): filemenu = Menu(menubar, tearoff=0) #将menubar的menu属性指定为filemenu,即filemenu为menubar的下拉菜单 menubar.add_cascade(label=Language[i], menu=filemenu) for k in L[i] : #绑定变量与回调函数,指定的变量vLang将这几项划为一组 filemenu.add_radiobutton(label = k,command = printItem,variable = vLang) # 将各个菜单项使用分隔符隔开 filemenu.add_separator() # filemenu = Menu(menubar, tearoff=2) root['menu'] = menubar root.mainloop()
add_separator()方法:在菜单中添加分隔线。
以上是下拉菜单,接下来是右拉菜单。
from Tkinter import * def donothing(): filewin = Toplevel(root) button = Button(filewin, text="Do nothing button") button.pack() root = Tk() menubar = Menu(root) filemenu = Menu(menubar, tearoff=0) #使用add_commanf一个个添加菜单 filemenu.add_command(label="New", command=donothing) filemenu.add_command(label="Open", command=donothing) filemenu.add_command(label="Save", command=donothing) filemenu.add_command(label="Save as...", command=donothing) filemenu.add_command(label="Close", command=donothing) #使用分隔符 filemenu.add_separator() filemenu.add_command(label="Exit", command=root.quit) #级联,#新建一个空的菜单,将menubar的menu属性指定为filemenu,即filemenu为menubar的下拉菜单 menubar.add_cascade(label="File", menu=filemenu) #编辑菜单栏 editmenu = Menu(menubar, tearoff=0) editmenu.add_command(label="Undo", command=donothing) editmenu.add_separator() editmenu.add_command(label="Cut", command=donothing) editmenu.add_command(label="Copy", command=donothing) editmenu.add_command(label="Paste", command=donothing) editmenu.add_command(label="Delete", command=donothing) editmenu.add_command(label="Select All", command=donothing) menubar.add_cascade(label="Edit", menu=editmenu) #帮助菜单栏 helpmenu = Menu(menubar, tearoff=0) helpmenu.add_command(label="Help Index", command=donothing) helpmenu.add_command(label="About...", command=donothing) menubar.add_cascade(label="Help", menu=helpmenu) #将root的menu属性设置为menubar root.config(menu=menubar) root.mainloop()
OptionMenu
OptionMenu类是一个辅助类,它用来创建弹出菜单,并且有一恶搞按钮显示它。它非常类似Windows上的下拉列表插件。
如果要获取当前选项菜单的值,你需要把它和一个Tkinter变量联系起来。
def __init__(self, master, variable, value, *values, **kwargs): """构造一个带有父主的optionmenu小部件,将资源文本变量设置为变量,初始选择的值值,另一个菜单值值和一个附加值关键字参数命令。"""
kw = {"borderwidth": 2, "textvariable": variable,
"indicatoron": 1, "relief": RAISED, "anchor": "c",
"highlightthickness": 2}
from Tkinter import * root = Tk() v = StringVar(root) v.set('Python') om = OptionMenu(root,v,'Python','PHP','CPP','C','Java','JavaScript','VBScript') om.pack() # print help(OptionMenu) root.mainloop()
修改不设初始值:
from Tkinter import *
root = Tk()
v = StringVar(root)
#创建一个OptionMenu控件
om = OptionMenu(root,
v,
'Python',
'PHP',
'CPP',
'C',
'Java',
'JavaScript',
'VBScript'
)
om.pack()
root.mainloop()
#OptionMenu的创建需要两个必要的参数,与当前值绑定的变量,通常为一StringVar类型;另一
#个是提供可选的内容列表,由OptionMenu的变参数指定。
设置OptionMenu的显示值
#当OptionMenu与变量绑定后,直接使用变量赋值的方法即可改变当前的值
#当OptionMenu与变量绑定后,直接使用变量赋值的方法即可改变当前的值 from Tkinter import * root = Tk() v = StringVar(root) #创建一个OptionMenu控件 v.set('Language') om = OptionMenu(root, v, 'Python', 'PHP', 'CPP', 'C', 'Java', 'JavaScript', 'VBScript' ) om.pack() # 运行程序,OptionMenu默认值为"Language",打印出的数值也为"Language print v.get() root.mainloop()
若想获得每次点击的选项,用bind绑定函数
from Tkinter import *
root = Tk()
v = StringVar(root)
def Print(event):
print v.get()
#创建一个OptionMenu控件
v.set('Language')
om = OptionMenu(root,
v,
'Python',
'PHP',
'CPP',
'C',
'Java',
'JavaScript',
'VBScript'
)
om.pack()
# 添加事件函数
om.bind('<Button-1>',Print)
root.mainloop()
相关文章推荐
- 鱼c笔记——Python的GUI编程(十):Tkinter的组件Menu、Menubutton和OptionMenu
- Python GUI编程之 Tkinter 菜单
- 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORD&LOWORD
- Python -- Gui编程 -- Tkinter的使用 -- 菜单与画布
- 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORD&LOWORD
- Python -- Gui编程 -- Qt库的使用 -- 菜单与对话框
- python基础知识-GUI编程-TK-StringVar
- Python GUI 菜单
- Python GUI编程(Tkinter)
- 鱼c笔记——Python的GUI编程(十三):Tkinter的组件Spinbox
- GUI编程第二弹_菜单
- 用Python做2048游戏 网易云课堂配套实验课。通过GUI来体验编程的乐趣。
- Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
- Python Qt GUI快速编程-第四章的Currency例子的python3+pytq5+Qt Designer实现
- pythonGUI编程打开默认浏览器
- Python GUI编程各种实现的对比
- python GUI编程(Tkinter)
- Python GUI编程实例
- python基础知识-GUI编程-TK-StringVar
- Python Tkinter GUI编程入门介绍