'''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