''' 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( ' <Button-1> ' ,printOption)om.pack()root.mainloop() # 每次点击OptionMenu程序打印出上次选中的项值 ''' 4.使用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( ' <Button-1> ' ,printOption)om.pack()root.mainloop() # author: jcodeer # blog: jcodeer.cublog.cn # email: jcodeer@126.com