1.GUI程序的框架Frame
import tkinter as tk #导入tkinter模块
class Application(tk.Frame): #定义Application类,派生于Frame类
def __init__(self,master=None): #构造函数
tk.Frame.__init__(self,master)
self.pack()
self.createWidgets() #声明对象方法,创建子组件
def createWidgets(self):
self.btnSayHi=tk.Button(self) #创建Button按钮组件
self.btnSayHi["text"]="Hello"
self.btnSayHi["command"]=self.sayHi #设置命令属性,绑定事件处理函数
self.btnSayHi.pack() #调用pack()方法调整位置和大小
self.btnQuit=tk.Button(self,text="Quit",command=root.destroy) #创建Quit按钮
self.btnQuit.pack()
def sayHi(self):
tk.messagebox.showinfo("Message","Hello World!") #弹出消息窗口
root=tk.Tk() #创建一个tk根窗口组件root
app=Application(master=root) #声明Application对象实例
app.mainloop() #调用组件mainloop()方法,进入事件循环
运行效果:
2.pack几何布局管理器
from tkinter import* #导入tkinter模块的所有内容
root=Tk();root.title("登录") #窗口标题
f1=Frame(root);f1.pack() #界面分为三个Frame
f2=Frame(root);f2.pack()
f3=Frame(root);f3.pack()
Label(f1,text="用户名").pack(side=LEFT) #标签放置在f1中,左停靠
Entry(f1).pack(side=LEFT) #单行文本框放置在f1中,左停靠
Label(f2,text="密 码").pack(side=LEFT) #标签放置在f2中,左停靠
Entry(f2,show="*").pack(side=LEFT) #单行文本框放置在f2中,左停靠
Button(f3,text="取消").pack(side=RIGHT) #取消按钮放置在f3中,右停靠
Button(f3,text="登录").pack(side=RIGHT) #登录按钮放置在f3中,右停靠
root.mainloop()
运行效果:
3.grid几何布局管理器
from tkinter import *
root =Tk()
Button(root,text="1").grid(row=0,column=0) #按钮1放置于0行0列
Button(root,text="2").grid(row=0,column=1) #按钮1放置于0行1列
Button(root,text="3").grid(row=0,column=2) #按钮1放置于0行2列
Button(root,text="4").grid(row=1,column=0)
Button(root,text="5").grid(row=1,column=1)
Button(root,text="6").grid(row=1,column=2)
Button(root,text="7").grid(row=2,column=0)
Button(root,text="8").grid(row=2,column=1)
Button(root,text="9").grid(row=2,column=2)
Button(root,text="0").grid(row=3,column=0,columnspan=2,sticky=E+W) #跨两列,左右紧贴
Button(root,text=".").grid(row=3,column=2,sticky=E+W) #左右紧贴
root.mainloop() #事件循环
4.place几何布局管理器
from tkinter import *
root=Tk();root.title("登录")
root['width']=200;root['height']=80 #窗口宽度高度
Label(root,text="用户名",width=6).place(x=1,y=1) #绝对坐标(1,1)
Entry(root,width=20).place(x=45,y=1)
Label(root,text="密 码",width=6).place(x=1,y=20)
Entry(root,width=20,show='*').place(x=45,y=20)
Button(root,text="登录",width=8).place(x=40,y=40)
Button(root,text="取消",width=8).place(x=110,y=40)
root.mainloop()
运行效果:
用此方法时,需要提前设计好窗口的大小,以及各组件的位置大小。