for i in range(10):
Message(root,text = 'A'*i,aspect = 400).pack() root.mainloop()
#默认情况向wider/height = 1.5,可以使用aspect属性,设置为4,即宽为高的4倍,可以显示10个'A'
'''4.Message绑定变量''' # -*- coding: cp936 -*- from Tkinter import * root = Tk() v = StringVar() v.set('000')
for i in range(10):
Message(root,text = 'A',textvariable = v).pack()
#打印当前的v值,只要是其中的一个Message的值发生变化,则此v值就会改变。 print v.get() root.mainloop() #绑定变量v,虽然创建Message时使用了text来指定Message的值,绑定的变量优先级高,可以改变text #指定的值。
'''5.测试一下justify属性''' # -*- coding: cp936 -*- from Tkinter import * root = Tk()
for i in [LEFT,RIGHT,CENTER]:
Message(root,text = 'ABC DEF GHI',justify = i).pack() root.mainloop()
#显示的文本自动断行,上下行分别使用了左对齐,右对齐和居中对齐
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默认值为\,打印出的数值也为\
#如果设置的值不包含在当前的列表中,会是什么结果?如下的代码使用\来测试 # -*- 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('
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('
root.mainloop()
Frame
'''Tkinter教程之Frame篇'''
#Frame就是屏幕上的一块矩形区域,多是用来作为容器(container)来布局窗体。 '''1.创建Frame'''
# -*- coding: cp936 -*- from Tkinter import * root = Tk()
#以不同的颜色区别各个frame
for fm in ['red','blue','yellow','green','white','black']:
#注意这个创建Frame的方法与其它创建控件的方法不同,第一个参数不是root Frame(height = 20,width = 400,bg = fm).pack() root.mainloop()
#添加不同颜色的Frame,大小均为20*400 '''2.向Frame中添加Widget''' # -*- coding: cp936 -*- from Tkinter import * root = Tk() fm = []
#以不同的颜色区别各个frame for color in ['red','blue']:
#注意这个创建Frame的方法与其它创建控件的方法不同,第一个参数不是root fm.append(Frame(height = 200,width = 400,bg = color)) #向下面的Frame中添加一个Label
Label(fm[1],text = 'Hello label').pack() fm[0].pack() fm[1].pack() root.mainloop()
#Label被添加到下面的Frame中了,而不是root默认的最上方。 #大部分的方法来自gm,留到后面gm时再介绍
'''3.Tk8.4以后Frame又添加了一类LabelFrame,添加了Title的支持''' from Tkinter import * root = Tk()
for lf in ['red','blue','yellow']:
#可以使用text属性指定Frame的title
LabelFrame(height = 200,width = 300,text = lf).pack() root.mainloop()
PanedWindow
'''Tkinter教程之PanedWindow'''
#PaneWindow(面板)为一gm,用来管理子Widget '''1.向PanedWindow中添加Pane''' #使用add方法
# -*- coding: cp936 -*- from Tkinter import * root = Tk()
panes = PanedWindow(orient = VERTICAL) panes.pack(fill = BOTH,expand = 1)
for w in [Label,Button,Checkbutton,Radiobutton]: panes.add(w(panes,text = 'hello')) root.mainloop()
#每个pane中创建一个widget
'''2.删除PanedWindow指定的pane''' #使用forget/remove方法 # -*- coding: cp936 -*- from Tkinter import * root = Tk() ws = []
panes = PanedWindow(orient = VERTICAL) panes.pack(fill = BOTH,expand = 1)