Tkinter教程(8)

2019-08-31 15:05

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('',popup) root.mainloop()

#运行测试一个,可以看到各个菜单 项的功能都是可以使用的,所以弹出菜单与一般的菜单功能是一样的,只是弹出的方式不同而已。

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


Tkinter教程(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版小学语文二年级下册8.彩色的梦第二课时公开课教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: