Tkinter教程之OptionMenu篇
'''Tkinter教程之OptionMenu篇'''
#OptionMenu为可选菜单,与Combox功能类似。
'''1.创建OptionMenu'''
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
v = StringVar(root)
v.set('Python')
om = OptionMenu(root,v,'Python','PHP','CPP','C','Java','JavaScript','VBScript')
om.pack()
root.mainloop()
#显示的文本自动断行,上下行分别使用了左对齐,右对齐和居中对齐
# -*- coding: cp936 -*-
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的变参数指定。
'''2.设置OptionMenu的显示值'''
#当OptionMenu与变量绑定后,直接使用变量赋值的方法即可改变当前的值
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
v = StringVar(root)
v.set('VBScript')
#创建一个OptionMenu控件
om = OptionMenu(root,
v,
'Python',
'PHP',
'CPP',
'C',
'Java',
'JavaScript',
'VBScript'
)
om.pack()
print v.get()
root.mainloop()
#运行程序,OptionMenu默认值为"VBScript",打印出的数值也为"VBScript"
#如果设置的值不包含在当前的列表中,会是什么结果?如下的代码使用"Tkinter"来测试
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
v = StringVar(root)
v.set('Tkinter')
#创建一个OptionMenu控件
om = OptionMenu(root,
v,
'Python',
'PHP',
'CPP',
'C',
'Java',
'JavaScript',
'VBScript'
)
om.pack()
print v.get()
root.mainloop()
#程序依旧是默认值改变为Tkinter,打印结果也变为Tkinter,但Tkinter不会添加到OptionMenu的列表中,也就是说,当选择其它的选项时,Tkinter的值会丢失。
'''3.打印OptionMenu的值'''
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
v = StringVar(root)
v.set('Tkinter')
def printOption(event):
print v.get()
#创建一个OptionMenu控件
om = OptionMenu(root,
v,
'Python',
'PHP',
'CPP',
'C',
'Java',
'JavaScript',
'VBScript'
)
om.bind('',printOption)
om.pack()
root.mainloop()
#每次点击OptionMenu程序打印出上次选中的项值
'''使用list作为OptionMenu的选项'''
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
Lang = ['Python','PHP','CPP','C','Java','JavaScript','VBScript']
v = StringVar(root)
v.set('Tkinter')
def printOption(event):
print v.get()
#创建一个OptionMenu控件,使用了apply函数
om = apply(OptionMenu,(root,v) + tuple(Lang))
om.bind('',printOption)
om.pack()
root.mainloop()