窗口
root = tkinter.Tk()
属性参数 |
描述 |
root.title() |
修改框体的名字,也可在创建时使用className参数来命名 |
root.geometry('250x150') |
指定主框体大小 |
root.resizable(False,False) |
窗口的高度和宽度是否可变 |
root.minsize(100,100) |
窗口的最小缩放 |
root.maxsize(600,333) |
窗口最大缩放 |
root.attributes("-alpha",0.9) |
设置窗口的透明度,1为不透明,0为完全透明 |
root.state("zoomed") |
启动窗口最大化 |
root.iconify() |
窗口最小化 |
root.withdraw() |
窗口隐藏 |
deiconify() |
取消窗口隐藏 |
root.update() |
刷新窗口 |
root.attributes("-topmost",1) |
设为窗口置顶模式 |
root.winfo_screenwidth() |
获得屏幕分辨率宽度 |
root.winfo_screenheight() |
获得屏幕分辨率高度 |
root.frame() |
返回X窗口的标示符或者是当前窗口的句柄 |
root.state() |
可以返回当前窗口状态,也可是作为属性,括号里面的参数还可以是"withdrawn"(隐藏窗口),"icon"(最小化窗口) |
root.command() |
设置和获取wm_command属性 |
root.quit() |
退出 |
组件放置属性
属性参数 |
描述 |
after |
将组件置于其他组件之后 |
before |
将组件置于其他组件之 |
anchor |
组件的对齐方式,顶对齐'n',底对齐's',左'w',右'e' |
side |
组件在主窗口的位置,可以为'top','bottom','left','right'(使用时tkinter.TOP,tkinter.E) |
fill |
填充方式 (Y,垂直,X,水平) |
expand |
1可扩展,0不可扩展 |
属性参数 |
描述 |
column |
组件所在的列起始位置 |
columnspam |
组件的列宽 |
row |
组件所在的行起始位置 |
rowspam |
组件的行宽 |
属性参数 |
描述 |
anchor |
组件对齐方式 |
x |
组件左上角的x坐标 |
y |
组件右上角的y坐标 |
relx |
组件相对于窗口的x坐标,应为0-1之间的小数 |
rely |
组件相对于窗口的y坐标,应为0-1之间的小数 |
width |
组件的宽度 |
heitht |
组件的高度 |
relwidth |
组件相对于窗口的宽度,0-1 |
relheight |
组件相对于窗口的高度,0-1 |
事件关联
- bind(sequence,func,add)
- bind_class(className,sequence,func,add)
- bind_all(sequence,func,add)
事件参数 |
描述 |
sequence |
所绑定的事件 |
func |
所绑定的事件处理函数 |
add |
可选参数,为空字符或‘+’ |
className |
所绑定的类; |
鼠标键盘事件 |
描述 |
<Button-1> |
鼠标左键按下,2表示中键,3表示右键 |
<ButtonPress-1> |
同上 |
<ButtonRelease-1> |
鼠标左键释放 |
<B1-Motion> |
按住鼠标左键移动 |
<Double-Button-1> |
双击左键 |
<Enter> |
鼠标指针进入某一组件区域 |
<Leave> |
鼠标指针离开某一组件区域 |
<MouseWheel> |
滚动滚轮 |
<KeyPress-A> |
按下A键,A可用其他键替代 |
<Alt-KeyPress-A> |
同时按下alt和A;alt可用ctrl和shift替代 |
<Double-KeyPress-A> |
快速按两下A |
<Lock-KeyPress-A> |
大写状态下按A |
窗口事件 |
描述 |
Activate |
当组件由不可用转为可用时触发 |
Configure |
当组件大小改变时触发 |
Deactivate |
当组件由可用转变为不可用时触发 |
Destroy |
当组件被销毁时触发 |
Expose |
当组件从被遮挡状态中暴露出来时触发 |
Unmap |
当组件由显示状态变为隐藏状态时触发 |
Map |
当组件由隐藏状态变为显示状态时触发 |
FocusIn |
当组件获得焦点时触发 |
FocusOut |
当组件失去焦点时触发 |
Property |
当窗体的属性被删除或改变时触发 |
Visibility |
当组件变为可视状态时触发 |
响应事件 event对象(def function(event)) |
描述 |
char |
键字符,仅对键盘事件有效 |
keycode |
按键名,仅对键盘事件有效 |
keysym |
按键编码,仅对键盘事件有效 |
num |
鼠标按键,仅对鼠标事件有效 |
type |
所触发的事件类型 |
widget |
引起事件的组件 |
width,heigh |
组件改变后的大小,仅Configure有效 |
x,y |
鼠标当前位置,相对于窗口 |
x_root,y_root |
鼠标当前位置,相对于整个屏幕 |
主要控件
属性 |
属性名 |
描述 |
Button |
按钮 |
类似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操作事件 |
Text |
文本域 |
多行文字区域,可用来收集(或显示)用户输入的文字(类似 HTML 中的 textarea) |
Entry |
文本框 |
单行文字域,用来收集键盘输入(类似HTML中的text) |
Label |
标签 |
用来显示文字或图片 |
Radiobutton |
单选按钮 |
一组按钮,其中只有一个可被“按下” (类似 HTML 中的radio) |
Checkbutton |
选择按钮 |
一组方框,可以选择其中的任意个(类似HTML 中的checkbox) |
Canvas |
画布 |
提供绘图功能(直线、椭圆、多边形、矩形) 可以包含图形或位图 |
Menu |
菜单 |
点下菜单按钮后弹出的一个选项列表,用户可以从中选择 |
Frame |
框架 |
包含其他组件的纯容器 |
Listbox |
列表框 |
一个选项列表,用户可以从中选择 |
Menubutton |
菜单按钮 |
用来包含菜单的组件(有下拉式、层叠式等等) |
Message |
消息框 |
类似于标签,但可以显示多行文本 |
Scale |
进度条 |
线性“滑块”组件,可设定起始值和结束值,会显示当前位置的精确值 |
Scrollbar |
滚动条 |
对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能 |
Toplevel |
顶级 |
类似框架,但提供一个独立的窗口容器。 |
属性参数 |
描述 |
anchor |
指定按钮上文本的位置 |
background(bg) |
指定按钮的背景色 |
bitmap |
指定按钮上显示的位图 |
borderwidth(bd) |
指定按钮边框的宽度 |
command |
指定按钮消息的回调函数 |
cursor |
指定鼠标移动到按钮上的指针样式 |
font |
指定按钮上文本的字体 |
foreground(fg) |
指定按钮的前景色 |
height |
指定按钮的高度 |
image |
指定按钮上显示的图片 |
state |
指定按钮的状态(disabled) |
text |
指定按钮上显示的文本 |
width |
指定按钮的宽度 |
padx |
设置文本与按钮边框x的距离,还有pady |
activeforeground |
按下时前景色 |
textvariable |
可变文本,与StringVar等配合着用 |
文本框 tkinter.Entry() tkinter.Text()
- tkinter.Entry() 单行
- tkinter.Text() 多行
属性参数 |
描述 |
background(bg) |
文本框背景色 |
foreground(fg) |
前景色 |
selectbackground |
选定文本背景色 |
selectforeground |
选定文本前景色 |
borderwidth(bd) |
文本框边框宽度 |
font |
字体 |
show |
文本框显示的字符,若为*,表示文本框为密码框 |
state |
状态 |
width |
文本框宽度 |
textvariable |
可变文本,与StringVar等配合着用 |
标签 tkinter.Label()
属性参数 |
描述 |
Anchor |
标签中文本的位置 |
background(bg) |
背景色 |
foreground(fg) |
前景色 |
borderwidth(bd) |
边框宽度 |
width |
标签宽度 |
height |
标签高度 |
bitmap |
标签中的位图 |
font |
字体 |
image |
标签中的图片 |
justify |
多行文本的对齐方式 |
text |
标签中的文本,可以使用'\n'表示换行 |
textvariable |
显示文本自动更新,与StringVar等配合着用 |
属性参数 |
描述 |
anchor |
文本位置 |
background(bg) |
背景色 |
foreground(fg) |
前景色 |
borderwidth |
边框宽度 |
width |
组件的宽度 |
height |
组件高度 |
bitmap |
组件中的位图 |
image |
组件中的图片 |
font |
字体 |
justify |
组件中多行文本的对齐方式 |
text |
指定组件的文本 |
value |
指定组件被选中中关联变量的值 |
variable |
指定组件所关联的变量 |
indicatoron |
特殊控制参数,当为0时,组件会被绘制成按钮形式 |
textvariable |
可变文本显示,与StringVar等配合着用 |
组图组件 Canvas()
属性参数 |
描述 |
background(bg) |
背景色 |
foreground(fg) |
前景色 |
borderwidth |
组件边框宽度 |
width |
组件宽度 |
height |
高度 |
bitmap |
位图 |
image |
图片 |
- 绘图方法
- 只要用create_方法画了一个图形,就会自动返回一个ID,创建一个图形时将它赋值给一个变量,需要ID时就可以使用这个变量名。
绘图方法 |
描述 |
create_arc |
圆弧; |
create_bitmap |
绘制位图,支持XBM; |
create_image |
绘制图片,支持GIF(x,y,image,anchor); |
create_line |
绘制支线; |
create_oval |
绘制椭圆; |
create_polygon |
绘制多边形(坐标依次罗列,不用加括号,还有参数,fill,outline); |
create_rectangle |
绘制矩形((a,b,c,d),值为左上角和右下角的坐标); |
create_text |
绘制文字(字体参数font,); |
create_window |
绘制窗口; |
delete |
删除绘制的图形; |
itemconfig |
修改图形属性,第一个参数为图形的ID,后边为想修改的参数; |
move |
移动图像(1,4,0),1为图像对象,4为横移4像素,0为纵移像素,然后用root.update()刷新即可看到图像的移动,为了使多次移动变得可视,最好加上time.sleep()函数; |
coords(ID) |
返回对象的位置的两个坐标(4个数字元组); |
属性参数 |
描述 |
tearoff |
分窗,0为在原窗,1为点击分为两个窗口 |
bg,fg |
背景,前景 |
borderwidth |
边框宽度 |
font |
字体 |
activebackgound |
点击时背景,同样有activeforeground,activeborderwidth,disabledforeground |
cursor |
unknow |
postcommand |
unknow |
selectcolor |
选中时背景 |
takefocus |
unknow |
title |
unknow |
type |
unknow |
relief |
unknow |
方法 |
描述 |
menu.add_cascade |
添加子选项 |
menu.add_command |
添加命令(label参数为显示内容) |
menu.add_separator |
添加分隔线 |
menu.add_checkbutton |
添加确认按钮 |
delete |
删除 |
弹窗
参数 |
描述 |
default |
指定消息框按钮 |
icon |
指定消息框图标 |
message |
指定消息框所显示的消息 |
parent |
指定消息框的父组件 |
title |
标题 |
type |
类型 |
参数 |
描述 |
title |
指定对话框的标题 |
prompt |
显示的文字 |
initialvalue |
指定输入框的初始值 |
参数 |
描述 |
filetype |
指定文件类型 |
initialdir |
指定默认目录 |
initialfile |
指定默认文件 |
title |
指定对话框标题 |
参数 |
描述 |
initialcolor |
指定初始化颜色; |
title |
指定对话框标题; |
例子
import tkinter as tk
def lab01(event): #event代表处理事件
print("我是标签~~!!")
return None
def hit01():
print("我是按钮01~~!!")
return None
def hit02():
print("我是按钮02~~!!")
return None
def menu_new():
print("我是新建文件功能~~!!")
return None
def pop(event):
root.update()
menu_b02.post(event.x_root, event.y_root)
root = tk.Tk()
root.title("第一窗口")
root.geometry("300x800+0+0")
#建立标签
#("微软雅黑", 12, "bold", "italic") 字体 字号 加粗 倾斜
lib01 = tk.Label(root, text = "第一个标签", bg = "red", font = ("微软雅黑", 12, "bold", "italic"), width = 10, height = 5)
#lib01.bind("<Button-1>", lab01) #指定绑定
#lib01.bind(类名, 动作, 函数名) #类绑定
lib01.bind_all("<Control-Shift-KeyPress-A>", lab01) #全局绑定
lib01.pack()
#建立按钮01
but01 = tk.Button(root, text = "第一个按钮", command = hit01, font = ("微软雅黑", 12), width = 10, height = 2)
but01.pack()
#建立按钮02
but02 = tk.Button(root, text = "第二个按钮", command = hit02, bg = "green", font = ("微软雅黑",12), width = 8, height = 1)
but02.pack()
#建立下拉菜单
#1.建立空菜单,此菜单属于根窗口
#2.添加各个级别菜单项
#3.把各个级别菜单添加标题,并按标题顺序绑定
#4.把建立好的整个菜单,绑定到根窗口,根窗口运行及激活
menu = tk.Menu(root)
menu_file = tk.Menu(menu)
menu_file.add_command(label="新建文件", command=menu_new)
menu_file.add_command(label="打开文件")
menu_file.add_separator() #分割线
menu_file.add_command(label="保存")
menu_edit = tk.Menu(menu)
menu_edit.add_command(label="返回")
menu_edit.add_command(label="查找")
menu_about = tk.Menu(menu)
menu_about.add_command(label="帮助文档")
menu_about.add_command(label="版本说明")
menu_about.add_command(label="关于。。")
menu.add_cascade(label="File", menu=menu_file)
menu.add_cascade(label="Edit", menu=menu_edit)
menu.add_cascade(label="About", menu=menu_about)
root.config(menu=menu)
#建立按钮02的右键菜单
#1.先建立菜单,此菜单属于根窗口
#2.添加菜单项
#3.在建立pop函数,函数运行时激活目录
#4.给根窗口绑定右键,点击后执行pop函数
menu_b02 = tk.Menu(root)
menu_b02.add_command(label="复制")
menu_b02.add_command(label="剪切")
menu_b02.add_command(label="粘贴")
but02.bind("<Button-3>", pop)
if __name__ == "__main__":
root.mainloop()