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) for k,v in {'Python':vPython, '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()
#程序运行,使用了Checkbutton,并通过printItem将每个Checkbutton在当前值打印出来。
'''4.向菜单 中添加Radiobutton项''' # -*- coding: cp936 -*- from Tkinter import * root = Tk()
menubar = Menu(root) vLang = StringVar()
#每次打印出当前选中的语言 def printItem():
print 'vLang = ',vLang.get() filemenu = Menu(menubar,tearoff = 0)
for k in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']:
#绑定变量与回调函数,指定的变量vLang将这几项划为一组
filemenu.add_radiobutton(label = k,command = printItem,variable = vLang) #将menubar的menu属性指定为filemenu,即filemenu为menubar的下拉菜单 menubar.add_cascade(label = 'Language',menu = filemenu) root['menu'] = menubar root.mainloop()
#程序每次打印出当前选中的语言
#与Checkbutton不同的是,同一个组内只有一个处于选中状态。
'''5.向菜单中添加分隔符''' # -*- coding: cp936 -*- from Tkinter import * root = Tk()
menubar = Menu(root)
#每次打印出当前选中的语言 def printItem():
print 'add_separator'
filemenu = Menu(menubar,tearoff = 0)
for k in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']: filemenu.add_command(label = k,command = printItem) #将各个菜单项使用分隔符隔开 filemenu.add_separator()
menubar.add_cascade(label = 'Language',menu = filemenu) root['menu'] = menubar root.mainloop()
#分隔符将相关的菜单项进行分组,只是UI上的实现,程序上没有任何改变,它也不执行任何的命令
''' 6.将以上的例5中的菜单改为右击弹出菜单'''
#方法是通过绑定鼠标右键,每当点击时弹出这个菜单,去掉与root的关联 # -*- coding: cp936 -*- from Tkinter import * root = Tk()
menubar = Menu(root)
def printItem():
print 'popup menu'
filemenu = Menu(menubar,tearoff = 0)
for k in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']: filemenu.add_command(label = k,command = printItem) filemenu.add_separator()
menubar.add_cascade(label = 'Language',menu = filemenu) #此时就不要将root的menu设置为menubar了 #root['menu'] = menubar def popup(event): #显示菜单
menubar.post(event.x_root,event.y_root)
#在这里相应鼠标的右键事件,右击时调用popup,此时与菜单绑定的是root,可以设置为其它的控件,在绑定的控件上右击就可以弹出菜单 root.bind('
#运行测试一个,可以看到各个菜单 项的功能都是可以使用的,所以弹出菜单与一般的菜单功能是一样的,只是弹出的方式不同而已。
''' 7.以下的代码演示了菜单项的操作方法,包括添加各种菜单项,删除一个或多个菜单项'''
# -*- coding: cp936 -*- from Tkinter import * root = Tk()
menubar = Menu(root)
def printItem():
print 'add_separator'
filemenu = Menu(menubar,tearoff = 0) for k in range(5):
filemenu.add_command(label = str(k),command = printItem) menubar.add_cascade(label = 'Language',menu = filemenu)
'''以下为向菜单中添加项的操作''' #在索引1添加一菜单command项
filemenu.insert_command(1,label = '1000',command = printItem) #在索引2添加一菜单checkbutton项
filemenu.insert_checkbutton(2,label = '2000',command = printItem) #在索引3添加一菜单radiobutton项
filemenu.insert_radiobutton(3,label = '3000',command = printItem) #将新添加的菜单项使用分隔符隔开 filemenu.insert_separator(1) filemenu.insert_separator(5)
'''以下为删除菜单项的操作''' #删除索引6-9的菜单项 filemenu.delete(6,9) #删除索引为0的菜单项 filemenu.delete(0)
root['menu'] = menubar root.mainloop()
#分隔符将相关的菜单项进行分组,只是UI上的实现,程序上没有任何改变,它也不执行任何的命令
Menubutton
'''Tkinter教程之Menubutton篇'''
'''这是一个过时了的控件,从Tk8.0开始将不再使用这个控件,取而代之的是Menu,这里介绍它是为了
兼容以前版本的Tk,能够知道有这个东东就可以了'''
'''1.介绍一下Menubutton的常用 方法,可以看到与Menu的使用方法基本相同。''' # -*- coding: cp936 -*- from Tkinter import * root = Tk()
mbLang = Menubutton(root,text = 'Language')
mbLang.menu = Menu(mbLang) #生成菜单项
for item in ['Python','PHP','CPP','C','Java','JavaScript','VBScript']: mbLang.menu.add_command(label = item) mbLang['menu'] = mbLang.menu mbLang.pack(side = LEFT)
#分隔符将相关的菜单项进行分组,只是UI上的实现,程序上没有任何改变,它也不执行任何的命令
#添加向菜单中添加checkbutton项 mbOS = Menubutton(root,text = 'OS') mbOS.menu = Menu(mbOS)
for item in ['Unix','Linux','Soloris','Windows']: mbOS.menu.add_checkbutton(label = item)
mbOS['menu'] = mbOS.menu mbOS.pack(side = LEFT)
#向菜单中添加radiobutton项
mbLinux = Menubutton(root,text = 'Linux') mbLinux.menu = Menu(mbLinux)
for item in ['Redhat','Fedra','Suse','ubuntu','Debian']: mbLinux.menu.add_radiobutton(label = item) mbLinux['menu'] = mbLinux.menu mbLinux.pack(side = LEFT)
#对菜单项进行操作
#向Language菜单中添加一项\,以分隔符分开 mbLang.menu.add_separator()
mbLang.menu.add_command(label = 'Ruby')
#向OS菜单中第二项添加\,以分隔符分开 mbOS.menu.insert_separator(2)
mbOS.menu.insert_checkbutton(3,label = 'FreeBSD') mbOS.menu.insert_separator(4)
#将Linux中的“Debian”删除 mbLinux.menu.delete(5)
root.mainloop()
#这个控件已经不提倡使用,取而代之的是Menu,使用这个比使用Menubutton更为方便。如果不是特别需要不要使用这个控件。
Message
'''Tkinter教程之Message篇'''
#Message也是用来显示文本的,用法与Label基本一样 '''1..创建一个简单的Message''' from Tkinter import * root = Tk()
Message(root,text = 'hello Message').pack() root.mainloop()
#运行程序,可以看到Hello之后,Message显示在它的下一行,这也是Message的一个特性。Label没有。
'''2.如果不让它换行的话,指定足够大的宽度''' from Tkinter import *
root = Tk()
Message(root,text = 'hello Message',width = 60).pack() root.mainloop()
#运行程序,可以看到Hello之后,Message显示在它的下一行,这也是Message的一个特性。Label没有。
'''3.使用aspect属性指定宽高比例''' # -*- coding: cp936 -*- from Tkinter import * root = Tk()