1. 组件分类:button、canvas、checkbutton、entry(单行文本框)、frame、label(标签)、listbox(列表框)、menu、menubutton、message(类似label,但可根据自身大小将文本换行)、radiobutton(单选框)、scale(滑块)、scrollbar、text(多行文本框)、toplevel(用来创建子窗口容器组件)
2. 组件布局:
组件的pack方法可使用以下参数设置组件位置属性
After 置于其他组件之后
Anchor 组件的对齐方式(n——顶对齐;s——底对齐;w——左对齐;e——右对齐)
Before 置于其他组件之前
Side 组件在主窗口的位置(可以为top、button、left、right)
组件grid方法可使用以下参数设置组件位置属性
Column 组件所在的列起始位置
Columnspam 组件的列宽
Row 组件所在的行起始位置
Rowspam 组件的行宽
组件place方式可使用以下参数设置组件位置属性
Anchor 组件对齐方式
X 组件左上角的x坐标
Y 组件左上角的y坐标
Relx 组件相对于窗口的x坐标(0-1间小数)、
Rely 组件相对窗口的y坐标(0-1间小数)
Width 组件宽度
Height 组件高度
Relwidth 组件相对于窗口的宽度(0-1间小数)
Relheight 组件相对于窗口的高度(0-1间小数)
3. 文本框:
Background 文本框背景色
Borderwidth 文本框边框宽度
Font 文本框中字体
Foreround 文本框前景色
Selectbackground 选定文本的背景色
Selectforeground 选定文本的前景色
Show 文本框中显示的字符(如密码框可设为*)
State 文本框的状态
Width 文本框的宽度
4. 标签
Anchor 标签中文本位置
Bitmap 标签中的位图
Height 标签的高度
Image 标签中的图片
Justify 标签中多行文本的对齐方式
Text 标签中的文本,可使用\n表示换行
背景色、前景色、边框宽度、字体等设置同文本框
5. 菜单和复选框
Value 组件被选中后关联变量的值
Variable 组件所关联的变量
其他同标签
最后,来个自己写的小代码
from tkinter import *
from PIL import Image, ImageTk
class Window(Frame):
def __init__(self, master= None):
Frame.__init__(self, master)
self.master = master
self.init_window()
def init_window(self):
#设置窗口标题
self.master.title("test")
#设置根据文本自适应窗体大小
self.pack(fill=BOTH, expand=1)
#创建按钮
#添加一个command,进行事务处理,这里点击退出,执行退出程序
quitButton = Button(self, text="exit",command=self.client_exit)
quitButton.place(x=0,y=0)
menu = Menu(self.master)
self.master.config(menu=menu)
file=Menu(menu)
file.add_command(label='Save')
menu.add_cascade(label='File',menu=file)
edit = Menu(menu)
edit.add_command(label='Undo')
edit.add_command(label='show Img',command=self.showImg)
edit.add_command(label='show txt',command=self.showTxt)
menu.add_cascade(label='Edit',menu=edit)
#响应事务
def client_exit(self):
exit()
def showImg(self):
load=Image.open(r'C:\Users\cheetah\Desktop\test.jpg')
render=ImageTk.PhotoImage(load)
img=Label(self,image=render)
img.image=render
img.place(x=1,y=1)
def showTxt(self):
text = Label(self,text='welcome to python')
text.pack()
#Tk()是一个创建窗口的类
root = Tk()
#设置窗体大小
root.geometry("400x300")
#把root这个顶层窗体作为一个对象传入我们定义的window类
app = Window(root)
#一直让窗体显示在顶层,除非有新的事件干扰
root.mainloop()