1.导入Tkinter 可以使用以下三种方法
(1)from Tkinter import *
#导入Tkinter
(2)import Tkinter
Tkinter.methodA
使用 Tkinter.methodA这样就不会污染其他命名空间
(3)import Tkinter as Tk
Tk.methodA
重新定义了一个Tk 使用 Tk.methodA这样也就不会污染其他命名空间
作为GUI需要考虑3个问题
屏幕上显示什么样的界面
图形怎么编排坐标
如何人机交互(事件绑定)
from Tkinter import *
root=Tk()
mylabel=Label(root,text="I am a label widget")
mybutton=Button(root,text="I am a button")
mylabel.pack()
mybutton.pack()
root.mainloop()
mylabel=Label(root,text="I am a label widget")
mylabel.pack()
等同于Label(root,text="I am a label widget").pack()
如果其他地方不需要调用或者修改 就不用赋值给变量(mylabel)
Tkinter核心组件
部件描述
Button一个简单的按钮,用于执行命令或其他操作。
Canvas结构化图形,该部件可用于绘制图形或图表、创建图形编辑器以及实现定制部件。
Checkbutton代表一个可拥有两个不同值的变量,点击按钮可以在两个值之间进行切换。
Entry一个文本输入框。
Frame一个容器部件。该框架可以拥有一个边框和背景,当创建一个程序的程序或对话布局时可用于集合其他部件
Label显示一个文本或图像。
Listbox显示一个替换列表。该列表框可被设置为接收单选框或清单行为。
Menu一个菜单面板。用于实现下拉和弹出菜单项。
Menubutton一个菜单按钮。用于实现下拉菜单项。
Message显示一个文本。类似于标签部件,但可以将文本自动绑定为给定的宽度或宽高比。
Radiobutton代表可拥有多个值的变量的一个值。点击按钮可使变量获取该值并同时清除所有与该变量相关的复选框按钮
Scale允许你通过拖拽"滑块"来设置数值
Scrollbar用于画板、输入框、列表框和文本部件的标准滚动条
Text格式化文本显示。允许你使用各种样式和属性显示或编辑文本。同时还支持嵌入图像或窗口。
Toplevel作为一个分割的顶层窗口显示的容器部件
调用核心组件
组件名(父窗口,参数)
from Tkinter import *
root=Tk()
#Label(root, text=" Enter your Password:").pack()
#Button(root, text="Search").pack()
#Checkbutton(root, text='RememberMe',variable='v', value=True).pack()
#Entry(root, width=30).pack()
Frame(root,width=500,height=200).pack()
root.mainloop()
图形布局有三种方法
pack()简单布局
grid()常用 类似于表格布局 网格布局
place() 最不常用 但是可以用于绝对定位
pack():
from Tkinter import *
root = Tk()
Button(root, text="A").pack(side=LEFT, expand=YES, fill=Y)
Button(root, text="B").pack(side=TOP, expand=YES, fill=BOTH)
Button(root, text="C").pack(side=RIGHT, expand=YES, fill=NONE, anchor=NE)
Button(root, text="D").pack(side=LEFT, expand=NO, fill=Y)
Button(root, text="E").pack(side=TOP, expand=NO, fill=BOTH)
Button(root, text="F").pack(side=RIGHT, expand=NO, fill=NONE)
Button(root, text="G").pack(side=BOTTOM, expand=YES, fill=Y)
Button(root, text="H").pack(side=TOP, expand=NO, fill=BOTH)
Button(root, text="I").pack(side=RIGHT, expand=NO)
Button(root, text="J").pack(anchor=SE)
root.mainloop()
side=TOP, anchor=SE
side='top', anchor='se'
大写 或者小写加引号等价的
pack()使用情况:
需要填满 或者 挨个排列布局的话会用到
grid()最常用
以下代码建立一个登陆框
username:
password:
login
from Tkinter import *
root = Tk()
Label(root, text="Username").grid(row=0, sticky=W)
Label(root, text="Password").grid(row=1, sticky=W)
Entry(root).grid(row=0, column=1, sticky=E)
Entry(root).grid(row=1, column=1, sticky=E)
Button(root, text="Login").grid(row=2, column=1, sticky=E)
root.mainloop()
#sticky=W表示 从西边开始排列(左手边)
#column 表示从左到右排列
#row从上到下排序 如无排列则为空 依然紧挨着(column=1,另外一个column为3 则为3的会紧挨着为1的 因为没有2)
#一个搜索框代码
from Tkinter import *
top = Tk()
top.title('Find & Replace')
Label(top,text="Find:").grid(row=0, column=0, sticky='e')
Entry(top).grid(row=0,column=1,padx=2,pady=2,sticky='we',columnspan=9)
Label(top, text="Replace:").grid(row=1, column=0, sticky='e')
Entry(top).grid(row=1,column=1,padx=2,pady=2,sticky='we',columnspan=9)
Button(top,text="Find").grid(row=0,column=10,sticky='ew',padx=2,pady=2)
Button(top,text="Find All").grid(row=1,column=10,sticky='ew',padx=2)
Button(top,text="Replace").grid(row=2,column=10,sticky='ew',padx=2)
Button(top,text="Replace All").grid(row=3,column=10,sticky='ew',padx=2)
Checkbutton(top,text='Match Whole word only').grid(row=2,column=1,columnspan=4,sticky='w')
Checkbutton(top,text='Match Case').grid(row=3,column=1,columnspan=4,sticky='w')
Checkbutton(top,text='Wrap around').grid(row=4,column=1,columnspan=4,sticky='w')
Label(top,text="Direction:").grid(row=2,column=6,sticky='w')
Radiobutton(top,text='Up',value=1).grid(row=3,column=6,columnspan=6,sticky='w')
Radiobutton(top,text='Down',value=2).grid(row=3,column=7,columnspan=2,sticky='w')
top.mainloop()