tkinter 记录
Ehoac Lv3

Tk(窗口)

  • title():设置标题

  • geometry("width x height+x+y):窗口位置

  • maxsize(width, height):拖拽可设置最大尺寸

  • minsize(width, height):拖拽可设置最小尺寸

  • configure(bg='color'):窗口颜色

  • resizable(True, False):固定宽度和高度

  • state('zoomed'):最大化

  • iconify():最小化

  • iconbitmap('xx.ico'): 窗口图标

  • winfo_screenwidth():屏幕宽度

  • winfo_screenheight():屏幕高度

widget(控件、组件、部件)

  • Button:

  • Canvas:

  • Checkbutton:

  • Entry:

  • Frame:

  • Label:

  • LabelFrame:

  • ListBox:

  • Menu:

  • MenuButton:

  • Message:

  • OptionMenu:

  • PanedWindow:

  • RadioButton:

  • Scale:

  • Scrollbar:

  • Spinbox:

  • Text:

  • Toplevel:

    tk in ttk

  • Button:

  • Checkbutton:

  • Entry:

  • Frame:

  • Label:

  • LabelFrame:

  • MenuButton:

  • Radiobutton:

  • Scale:

  • Scrollbar:

  • PanedWindow:

    ttk new

  • Combobox:

  • Notebook:

  • Progressbar:

  • Separetor:

  • Sizegrip:

  • Treeview:

widget 共同属性

  • Dimensions: 大小
    • height:
    • width:
  • Colors:颜色
    • fg 或 foreground:
    • bg 或 background:
  • Fonts:字形
    • family: Helvetica、Times 等
    • size:
    • weight: bold、normal 等
    • slant: italic、roman 等
    • underline: True 或 False
    • overstrike: True 或 False
  • Anchor:锚
    • anchor: nesw
  • Relief styles:属性边框;flat/groove/raised/ridge/solid/sunken
  • Bitmaps:显示位图
    • Label(root, bitmap='hourglass'): error/hourglass/info/questhead/question/warning/gray12/gray25/gray50/gray75
      Bitmaps
  • Cursors:鼠标外形,常用:arrow/circle/mouse/hand1/left_tee/left_side/ll_angle 等
    鼠标外形

widget 共用方法

Configuration

  • config(option=value):设置属性,可在程序执行时建立或更改属性

  • cget('option'):取得 option 参数

  • keys(): 获得所有当前 widget 的参数

    Event Processing

  • mainloop():让程序继续执行,同时进入等待与处理窗口事件

  • quit(): Python Shell 窗口结束,但所有窗口继续执行

  • update(): 更新窗口画面

    Event callbacks

  • bind(event, callback): 事件绑定

  • unbind(event): 解除绑定

Alarm handlers

  • after(time,callback): 间隔指定时间后调用 callback()方法

Label(标签)

Label(父对象, options, ...)
常用options参数

  • anchor:
  • bg 或 backgroun:
  • bitmap: 不与 image 参数共存,如果两者都有设置,bitmap 将不起作用
  • borderwidth 或 bd
  • compound: 图像文字共存时,配置文字与图像的位置关系
    • Label(root, bitmap='hourglass', compound='left', text='Text')
    • left: 图像在左
    • right: 图像在右
    • top: 图像在上
    • bottom: 图像在下
    • center: 图像覆盖在图像上方
  • cursor:
  • fg 或 foreground:
  • font:
  • height:
  • image:
  • justify: 多行时设置最后一行对齐方式,left/center/right
  • padx/pady:设置标签文字边界与标签区间的间距
  • relief:
  • text:
  • textvariable:
  • underline:
  • width:
  • wraplength: 设置标签中文字在多少宽度后换行

Button(按钮)

Label(父对象, options, ...)
常用options参数

  • borderwidth 或 bd:边界宽度默认是两个像素
  • bg 或 background:背景色彩
  • command:单击功能按钮时,执行的方法
  • cursor:鼠标移至按钮上时的形状
  • fg 或 foreground: 前景色彩
  • font: 字形
  • height:高,单位是字符高
  • highlightbackground:取得焦点是背景颜色
  • image:按钮上的图像
  • justify: 多行时设置最后一行对齐方式,left/center/right
  • padx/pady:默认是 1,设置标签文字边界与标签区间的间距
  • relief:控制文字外框
  • state:默认为 NORMAL,设为 DISABLE 时灰阶显示,表示不可用
  • text:名称
  • undeline:设置第几个文字有下划线,从 0 开始算,默认-1 表示无下划线
  • width:宽,单位是字符宽
  • wraplength:限制每行文字数, 默认为 0,表示只有’\n’都会换行
  • compound: 图像文字共存时,配置文字与图像的位置关系

Lambda方法
通过 Labmda 表达式调用相同方法,但传递不同参数

1
2
Button(root, text='Text', command=lambda:bColor('blue'))

Entry(文本框)

Entry(父对象, options, ...)
常用options参数

  • borderwidth 或 bd:边界宽度默认是两个像素
  • bg 或 background:背景色彩
  • command:单击功能按钮时,执行的方法
  • cursor:鼠标移至按钮上时的形状
  • exportselection:如果执行选取时,所选取的字符串会自动输出至剪贴板,如果想要避免,可设置 exportselection=0
  • fg 或 foreground: 前景色彩
  • font: 字形
  • height:高,单位是字符高
  • highlightbackground:取得焦点是背景颜色
  • justify: 多行时设置最后一行对齐方式,left/center/right
  • relief:控制文字外框
  • selectbackground:选取内容的背景色彩
  • selectborderwidth:选取内容的边界宽度,预设是 1
  • selectforeground:选取内容的前景色彩
  • show:显示输入字符, show=’*'表示显示星号
  • state:默认为 NORMAL,设为 DISABLE 时灰阶显示,表示不可用
  • width:宽,单位是字符宽
  • xscrollcommand:在 x 轴使用滚动条

方法

  • get():获得目前 Entry 字符串内容
  • insert(index, s):向 Entry 中插入字符串
  • delete(first, last=None):删除 Entry 中从第 first 到 last-1 字符间的字符串,delete(0,END)删除整个字符串

eval函数
返回数学表达式的结果

1
2
3
expr = input("数学表达式:")
# expr = 1+2
print("result=", eval(expr))

Radiobutton(选项按钮)

Radiobutton(父对象, options, ...)
常用options参数

  • activebackground:鼠标在选项按钮上时的背景色彩
  • activeforeground:鼠标在选项按钮上时的前景色彩
  • anchor:空间大于需求时,选项按钮位置,默认 CENTER
  • bg 或 background:标签背景色彩或 indicator 的背景色彩
  • bitmap:位图图像对象
  • borderwidth 或 bd:边界宽度默认是两个像素
  • command:更改选项时,执行的方法
  • cursor:鼠标移至按钮上时的形状
  • fg 或 foreground: 前景色彩
  • font: 字形
  • height:高,单位是字符高,选项上文字有几行,默认一行
  • highlightbackground:取得焦点时背景颜色
  • highlightcolor:取得焦点时颜色
  • image:按钮上的图像
  • indicatoron:为 0 时,可以建立盒子选项按钮
  • justify: 多行时设置最后一行对齐方式,left/center/right
  • padx:默认是 1,设置按钮和文字距离
  • pady:默认是 1,设置按钮上下间距
  • selectcolor:选取时色彩
  • selectimage:选取时图像
  • state:默认为 NORMAL,设为 DISABLE 时灰阶显示,表示不可用
  • text:按钮旁文字
  • textvariable:以变量方式显示选项按钮文字
  • undeline:设置第几个文字有下划线,从 0 开始算,默认-1 表示无下划线
  • value:选项按钮的值,可以区分选取的按钮
  • variable:设置或取得目前选取的单选按钮
  • width:选项按钮上的文字有几个字符宽,省略自动调整实际宽度
  • wraplength:限制每行文字数, 默认为 0,表示只有’\n’都会换行
  • compound: 图像文字共存时,配置文字与图像的位置关系

Checkbutton(复选框)

Checkbutton(父对象, options, ...)
常用options参数

  • activebackground:鼠标在选项按钮上时的背景色彩
  • activeforeground:鼠标在选项按钮上时的前景色彩
  • bg 或 background:标签背景色彩或 indicator 的背景色彩
  • bitmap:位图图像对象
  • borderwidth 或 bd:边界宽度默认是两个像素
  • command:更改选项时,执行的方法
  • cursor:鼠标移至按钮上时的形状
  • disabledforeground:无法操作时的颜色
  • font: 字形
  • height:高,单位是字符高,选项上文字有几行,默认一行
  • highlightbackground:取得焦点时背景颜色
  • highlightcolor:取得焦点时颜色
  • image:按钮上的图像
  • justify: 多行时设置最后一行对齐方式,left/center/right
  • offvalue:控制变量默认未选取时值是 0
  • onvalue:控制变量默认未选取时值是 1
  • padx:默认是 1,设置按钮和文字距离
  • pady:默认是 1,设置按钮上下间距
  • relief:默认是 relief=FLAT,控制外框
  • selectcolor:选取时色彩
  • selectimage:选取时图像
  • state:默认为 NORMAL,设为 DISABLE 时灰阶显示,表示不可用
  • text:按钮旁文字
  • textvariable:以变量方式显示选项按钮文字
  • undeline:设置第几个文字有下划线,从 0 开始算,默认-1 表示无下划线
  • value:选项按钮的值,可以区分选取的按钮
  • variable:设置或取得目前选取的单选按钮
  • width:选项按钮上的文字有几个字符宽,省略自动调整实际宽度
  • wraplength:限制每行文字数, 默认为 0,表示只有’\n’都会换行
  • compound: 图像文字共存时,配置文字与图像的位置关系

Frame(框架)

Frame(master, options,...)
options

  • bg 或 background:背景色彩
  • borderwidth 或 bd:边界宽度默认是两个像素
  • cursor:鼠标移至按钮上时的形状
  • height:高,单位是字符高
  • highlightbackground:取得焦点是背景颜色
  • highlightcolor:取得焦点时颜色
  • highlightthickness:取得焦点时的厚度
  • relief:默认是 relief=FLAT,控制外框
  • width:宽,单位是像素

LabelFrame(标签框架)

LabelFrame(master, options,...)
options

  • bg 或 background:背景色彩
  • borderwidth 或 bd:边界宽度默认是两个像素
  • cursor:鼠标移至按钮上时的形状
  • height:高,单位是字符高
  • highlightbackground:取得焦点是背景颜色
  • highlightcolor:取得焦点时颜色
  • highlightthickness:取得焦点时的厚度
  • labelAnchor:放置标签的位置
  • relief:默认是 relief=FLAT,控制外框
  • text:标签内容
  • width:宽,单位是像素

Toplevel(独立窗口)

Toplevel(options,...)
options

  • bg 或 background:背景色彩
  • borderwidth 或 bd:边界宽度默认是两个像素
  • cursor:鼠标移至按钮上时的形状
  • fg:文字前景色
  • font: 字形
  • height:高,单位是字符高
  • width:宽,单位是像素

Scale(尺度)

Scale(master, options,...)
options

  • activebackground:鼠标在尺度条上时的背景色彩
  • bg 或 background:背景色彩
  • borderwidth 或 bd:边界宽度默认是两个像素
  • command:更改数值时,执行的方法
  • cursor:鼠标移至尺度条上时的形状
  • digits:尺度数值,使用 IntVar,DoubleVar,StringVar 变量类型读取
  • fg:文字前景色
  • font: 字形
  • from_:范围值初值
  • highlightbackground:取得焦点是背景颜色
  • highlightcolor:取得焦点时颜色
  • label:
  • length:
  • orient:
  • relief:
  • repeatdelay:设置按住尺度条多久后可以拖动,默认 300ms
  • resolution:每次更改的数值
  • showvalue:显示尺度条目前值,设为 0 不显示
  • state:
  • takefocus:正常是可循环取得焦点,设为 0 无法取得焦点
  • tickinterval:标记刻度
  • to:末端值
  • troughcolor:槽(trough)的颜色
  • variable:设置或取得目前选取的尺度值
  • width:宽度或高度
    Scale

askcolor()方法
AskColor

Spinbox(另一种输入控件)

Entry 和 Button 的结合

Spinbox(master, options,...)
options

  • activebackground:鼠标在尺度条上时的背景色彩
  • bg 或 background:背景色彩
  • borderwidth 或 bd:3D 边界宽度默认是两个像素
  • command:更改选项时,执行的方法
  • cursor:鼠标移至控件上时的形状
  • disabledforeground:无法操作时的颜色
  • disabledbackground:无法操作时的颜色
  • fg:文字前景色
  • font: 字形
  • format:格式化的字符串
  • from_:范围值初值
  • increment:每次单击 up/down 变化值
  • justify:
  • relief:
  • repeatdelay:设置单击 up/down 变化间隔,默认 300ms
  • state:
  • textvariable:
  • values:元组或其它序列值
  • to:末端值
  • width:宽度或高度
  • wrap:单击 up/down 可以让数值重新开始
  • xscrollcommand:x 轴的滚动条

方法

  • get():

Spinbox

Message

Message(父对象, options, ...)
常用options参数

  • anchor: 空间大于所需时,消息位置,默认 CENTER
  • aspect: 宽度与高度比,默认 150%
  • bg 或 background:
  • bitmap: 不与 image 参数共存,如果两者都有设置,bitmap 将不起作用
  • borderwidth 或 bd
  • cursor:
  • fg 或 foreground:
  • font:
  • height:
  • image:
  • justify: 多行时设置最后一行对齐方式,left/center/right
  • padx/pady:设置标签文字边界与标签区间的间距
  • relief:
  • text:
  • textvariable:
  • underline:
  • width:
  • wraplength: 设置标签中文字在多少宽度后换行

Messagebox(消息对话框)

  • showinfo(title, message, options)
  • showwarning(title, message, options)
  • showerror(title, message, options)
  • askquestion(title, message, options)
  • askokcancel(title, message, options)
  • askyesno(title, message, options)
  • askyesnocancel(title, message, options)
  • askretrycancel(title, message, options)

options参数

  • default constant: 默认按钮是 OK/YES/Retry 在前面,也可更改此设定
  • icon(constant):设定显示图标,INFO/ERROR/QUESTION/WARNING
  • parent(widget):对话框关闭时,焦点窗口将返回此父窗口

Listbox(列表框)

Listbox(master, options,...)
options

  • bg 或 background:背景色彩
  • borderwidth 或 bd:边界宽度默认是两个像素
  • cursor:鼠标移至按钮上时的形状
  • fg 或 foreground:
  • font:
  • height:高,单位是字符高
  • highlightcolor:取得焦点时颜色
  • highlightthickness:取得焦点时的厚度
  • listvariable:以变量方式处理选项内容
  • relief:默认是 relief=FLAT,控制外框
  • selectbackground:
  • selectmode:决定多少可选和鼠标拖拽如何影响选项
    • BROWSE:默认值
    • SINGLE:
    • MULTIPLE:
    • EXTENDED:
  • width:宽,单位是像素
  • xscrollcommand:
  • blog/imagesllcommand:

方法

  • insert(index, elements):为列表框建立项目
  • size(): 传回列表项目数量
  • selection_set(index): 选取特定索引项
  • delete(indexStart, indexEnd=None):删除特定索引项
  • get(start,end=None):传回指定索引项
  • curselection():传回选取项目的索引
  • selection_include(index):检查指定索引是否被选中

事件
<<ListboxSelect>>:虚拟事件,执行选取操作时触发

Scrollbar(滚动条)

Scrollbar(master, options,...)
options

  • activebackground:鼠标在尺度条上时的背景色彩
  • bg 或 background:背景色彩
  • borderwidth 或 bd:边界宽度默认是两个像素
  • command:更改数值时,执行的方法
  • cursor:鼠标移至尺度条上时的形状
  • elementborderwidth:滚动条和方向箭头的外部宽度,默认是 1
  • highlightbackground:取得焦点是背景颜色
  • highlightcolor:取得焦点时颜色
  • highlightthickness:获得焦点时的厚度
  • jump:默认是 0,每次拖拽都触发事件,设为 1 时,方形鼠标按键时才触发事件
  • orient:
  • repeatdelay:设置按住尺度条多久后可以拖动,默认 300ms
  • takefocus:可以按 Tab 切换滚动条成为焦点,设 0 取消此设置
  • troughcolor:槽(trough)的颜色
  • variable:设置或取得目前选取的尺度值
  • width:宽度,默认 16 像素

Scroll

OptionMenu(下拉式列表)

OptionMenu(master, options,*value)
*value 时一系列下拉列表

OptionMenu

Combobox(组合框)

Combobox(master, options)

options参数

  • textvariable:设置变量值
  • value:选项内容,以元组方式存在

Combobox

PanedWindow(面板)

PanedWindow(master, options,...)
options

  • bg 或 background:鼠标不在控件时,若有滚动条或方向盒时,滚动条或方向盒的背景色彩
  • bd: 3D 显示时的宽度,默认是 2
  • borderwidth:边界线宽度默认是两个像素
  • cursor:鼠标移至控件上时的形状
  • handlepad: 面板显示宽度,默认是 8
  • handlesize: 面板显示大小, 默认是 8
  • height: 没有默认高度
  • orient: 面板方向默认是 HORIZONTAL
  • relief: 默认 FLAT
  • sashcursor: 分隔线光标, 没有默认值
  • sashrelief: 面板分隔线外框,默认 RAISED
  • showhandle:滑块属性,可设定为是否显示,没有默认值
  • width:整体宽度,没有默认值

方法

  • add(widget, options): 插入子控件
    • options 中 widget 控制缩放时子控件占比

Notebook(选项卡)

Notebook(master, optins, ...)
options

  • height:默认使用最大可能高度
  • padding: 设置外围的额外空间,可以设置 4 个值,代表 left/top/right/bottom 四周的空间
  • width: 默认使用最大可能宽度

方法

  • add(widget, options):添加子对象
    • options
    • compound:同时有图像和文字时,两者的关系
    • image:以图像方式呈现
    • padding: 设置额外空间
    • state:可设:normal/disabled,hidden
    • sticky: 子窗口面板的配置方式,nsew
    • text: 选项卡中字符串内容
    • underline: 指出第几个字母含下划线

Progressbar(进度条)

Progerssbar(master, options,...)
options:

  • length: 长度,默认 100 像素
  • mode:模式
    • determinate: 从起点到终点
    • indeterminate: 在起点和终点间来回移动
  • maximum:最大值,默认 100
  • name:名称,供参考引用
  • orient:方向,HORIZONTAL/VERTICAL
  • value: 目前值
  • variable:记录目前进度值

动画
在每次更新进度 value 值时调用 update()方法

方法

  • start(interval):每隔 interval 时间移动一次指针。默认 50ms
  • step(delta):每次增加一次 delta,默认是 1.0
  • stop():停止 start()的运行

Menu(master, options)
options:

  • activebackground:鼠标在选项按钮上时的背景色彩
  • activeborderwidth:鼠标在选项按钮上时的外边框宽度
  • activeforeground:鼠标在选项按钮上时的前景色彩
  • bd:所有菜单的外边框宽度
  • bg 或 background:未被选取时的背景色彩
  • cursor:鼠标移至按钮上时的形状
  • disabledforeground: disabled 时的前景色彩
  • font: 字形
  • fg:未被选取时的前景色彩
  • image:按钮上的图像
  • tearoff:菜单上方的分隔线

方法

  • add_cascade():建立分层菜单
  • add_command():增加菜单列表
    • undeline:为字母增加下划线,按 Alt+下划线字母启用快捷功能
    • accelerator:ctrl 快捷键,accelerator=‘Ctrl+N’
  • add_separator():增加菜单列表的分隔线

弹出式菜单
PopupMenu

add_checkbutton():
MenuCheckButton

Toolbar(工具栏)

Toolbar

Text(列表框)

Text(master, options,...)
options

  • bg 或 background:背景色彩
  • borderwidth 或 bd:边界宽度默认是两个像素
  • cursor:鼠标移至按钮上时的形状
  • exportselection:
  • fg 或 foreground:
  • font:
  • height:高,单位是字符高
  • highlightbackground:取得焦点时背景颜色
  • highlightcolor:取得焦点时颜色
  • highlightthickness:取得焦点时的厚度
  • insertbackground:插入光标的颜色
  • insertborderwidth: 围绕游标的 3D 厚度,默认是 0
  • padx:
  • pady:
  • relief:默认是 relief=FLAT,控制外框
  • selectbackground:
  • selectborderwidth:
  • selectforeground:
  • state:
  • width:宽,单位是字符宽
  • wrap:控制某行文字太长时的处理,默认是 wrap=CHAR,从字符断行;warp=WORD 时,从字做断行
  • xscrollcommand:
  • blog/imagesllcommand:

方法

  • insert(index, string):将字符串插入指定的索引位置
  • get(): 取得目前所选文字,选取文字时,Text 对象将所选文字起始位置放在 SEL_FIRST,结束索引放在 SEL_LAST;
    • 索引形式:
    • line/column("line.column")
    • INSERT
    • CURRENT:
    • END:
    • 表达式Expression:索引表达式,说明如下
      • +count chars,如“+2c”索引往后移动两个字符
      • -count chars,如“-2c”索引往前移动两个字符

书签:特殊位置建立书签,方便查询

  • index(mark):传回指定书签的 line 和 column
  • mark_names():传回这个 Text 对象所有的书签、
  • mark_set(mark, index):在指定的 index 位置设置书签
  • `mark_unset(mark):取消指定书签设置

标签:指一个区域文字,为这个区域取的名字

  • tag_add(tagname, startindex[,endindex]...)
  • tag_config(tagname, options,...):
    • options:
    • background:
    • borderwidth:
    • font:
    • foreground:
    • justify:
    • overstrike:
    • underline:
    • wrap:
  • tag_delete(tagname):删除标签,同时移除此标签特殊的编辑或绑定
  • tag_remove(tagname[,startindex[,endindex]]...):删除标签,不移除此标签特殊的编辑或绑定

cut/copy/paste
cut/copy/paste
内建cut/copy/paste

重复与复原
重复与复原

查找文字
pos=text.search(key, startindex, endindex):
查找文字

  • pos: 找到的字符传索引位置
  • key: 字符传
  • startindex: 查找起始位置
  • endindex: 查找结束位置

拼写检查
拼写检查

保存
保存
另在为

新建文档
新建文档

打开文档
打开文档

ScrolledText:默认含滚动条

1
text = ScrolledText(root, undo=True)

插入图像
插入图像

其它

  • 若要 x 轴显示滚动条,wrap 需设置为 none

Treeview(树状表格数据)

Treeview(master, options,...)
options:

  • columns:栏位字符串
  • cursor:
  • displaycolumns: 可设置栏位显示顺序
  • height:
  • padding:
  • selectmode:
    • BROWSE:
    • EXTENDED:
    • NONE:
  • show:
  • takefocus: tree/heading

格式化栏位内容
column(id, options)

  • anchor:
  • minwidth:
  • stretch:
  • width:

建立不同颜色行内容
tag_configure("tagname",options,...)

  • background:
  • font:
  • foreground:
  • image:

建立层级Treeview
建立层级Treeview

图像
insert()方法增加 image 参数
可能需增加行高:
Style().configure("Treeview",rowheight=xx)

Selection事件
Selection事件

删除项目
删除项目

添加项目
添加项目

双击项目
双击项目

Scroll
Scroll

排序
排序

Canvas(画布)

canvas=Canvas(tk,width=xx,height=xx)

绘制线条
create_line(x1,y1,x2,y2,...,xn,yn,options)

  • options
  • arrow: tk.FIRST/tk.LAST/tk.BOTH
  • arrowshape:元组(d1,d2,d3)
  • capstyle:BUTT/PROJECTING/ROUND
  • dash:
  • dashoffset
  • fill
  • joinstyle:ROUND/BEVEL/MITER
  • stripple
  • width

绘制矩形
create_rectangle(x1,y1,x2,y2,options)

  • options
  • dash
  • dashoffset
  • fill
  • outline
  • stripple
  • width

绘制圆弧
create_arc(x1,y1,x2,y2,extend=angle, style=ARC,options)

  • options
  • dash
  • dashoffset
  • extent
  • fill
  • outline
  • start
  • stripple
  • style
  • width

绘制圆或椭圆
create_oval(x1,y1,x2,y2,options)

  • options
  • dash
  • dashoffset
  • fill
  • outline
  • stripple
  • width

绘制多边形
create_polygon(x1,y1,x2,y2,...,xn,yn,options)

  • options
  • dash:
  • dashoffset
  • fill
  • outline
  • stripple
  • width

输出文字
create_text(x,y,text='',options)

  • anchor
  • fill
  • font
  • justify
  • stipple
  • text
  • width

更改画布背景颜色
建立画布时,增加 bg 参数设置画布背景颜色

插入图像
create_image(x,y,options)

  • options
  • anchor
  • image

鼠标拖拽绘制线条
排序

基本动画

1
2
canvas.move(ID, xMove, yMove)
canvas.update()

多个球移动
多个球移动

1
2
3
4
5
6
7
8
# 增加随机数
for x in range(0, 100):
if randint(1, 100) > 70:
canvas.move(id2, 5, 0)
else:
canvas.move(id1, 5, 0)
tk.update()
time.sleep(0.05)

消息绑定

1
2
3
4
5
6
7
8
9
10
11
12
def ballMove(event):
canvas.move(1, 5, 0)

def ballMove(event):
if event.keysym == 'Right':
canvas.move(1, 5, 0)

canvas.bind_all('<KeyPress-Left>', ballMove)
canvas.bind_all('<KeyPress-Right>', ballMove)
canvas.bind_all('<KeyPress-Up>', ballMove)
canvas.bind_all('<KeyPress-Down>', ballMove)

反弹球
向下移动
向下移动

位置信息

1
2
3
4
5
6
ballPos = canvas.coords(id)

ballPos[0] 左x坐标
ballPos[1] 上y坐标
ballPos[2] 右x坐标
ballPos[3] 下y坐标

上下反弹
上下反弹

四面反弹
四面反弹

球拍

1
2
3
4
5
6
7
8
9
10
11
12
id = canvas.create_rectangle(0,0,100,15,fill=color)
canvas.move(id,270,400)

# 移动
canvas.bind_all('<KeyPress-Right>', moveRight)
canvas.bind_all('<KeyPress-Left>', moveLeft)

def moveLeft(self, event):
self.x = -3

def moveRight(self, event):
self.x = 3

球拍

碰撞
碰撞

完整
完整1
完整2

PhotoImage(图像)

支持gif和png格式

1
2
3
4
5
6
7
8
9
imgObj = PhotoImage(file="xxx.gif")
label = Label(root, image=imgObj)

# 兼容
# pip install pillow
from PIL import Image, ImageTk
img = Image.open('xxx.jpg')
imgObj = ImageTk.PhotoImage(image)
label = Label(root, image=imgObj)

Separator(分隔线)

Separator(master, options)

  • orient: HORIZONTAL 水平分隔线;VERTICAL 垂直分隔线

Wodget Layout Manager(窗口控件配置管理员)

pack 方法

pack(options, ...)
options参数

  • side:垂直或水平配置控件
    • TOP:由上而下
    • BOTTOM:由下而上
    • LEFT:由左而右
    • RIGHT:由右而左
  • fill: 设置填满所分配容器区间的方式
    • fill=X: X 轴不留白
    • fill=Y: Y 轴不留白
    • fill=BOTH:X 轴 Y 轴均不留白
    • fill=None:保持原有大小
  • padx/pady:控件边界与容器距离或控件边界间的距离
  • ipadx/ipady: 标签文字与标签容器间距
  • anchor:控件在窗口中的位置,指控件内容在控件区域的位置
  • expand:控件是否填满额外的父容器空间,False 或 True

方法

  • slaves(): 所有控件对象
  • info():pack 选项对应的值
  • forget():隐藏控件,可用 pack(options, …)复原显示
  • location(x, y):传回此点是否在单元格,如果是传回坐标,如果不是传回(-1,-1)
  • size(): 控件大小
  • propagate(boolean):True 表示父窗口大小由子控件决定

grid 方法

gird(options, ...)
options参数

  • row:
  • column:
  • padx/pady:控件边界与容器距离或控件边界间的距离
  • rowspan: row 方向合并数量
  • columnspan: column 方向合并数量
  • sticky: 类似 anchor,可配置 N/S/W/E;组合之后可拉长拉宽控件

方法

  • rowconfigure()/columnconfigure():设定第几个 row 或 column 的绽放比例

place 方法

place(options, ...)
options参数

  • height/width:设定控件的实体大小
  • relx/rexy:相对于父容器的位置
  • x/y:设置左上方位置
  • relheight/relwidth:相对大小;0.0~1.0
  • bordermode:
  • anchor:

Variable Classes(变量类别)

更改控件内容可使用控件参数,如 textvariable/variable/onvalue 等

1
2
3
4
5
6
7
8
9
x = IntVar()
x = DoubleVar()
x = StringVar()
x = BooleanVar()

def callbackW(*args):
pass

x.trace('w', callbackW)
  • get():取得变量内容
  • set():设置变量内容
  • trace(mode, callback):x.trace(‘r’, callback),r 表示执行读取时执行隐函数,w 表示修改时执行隐函数
    • callback(name, index, mode)参数:name,tk 变量名称;index 索引;mode 模式

事件绑定

Event 对象属性:

  • type 事件类型
  • char 键盘事件 ascii 码
  • keycode 键盘事件 键盘代码
  • delta 鼠标滚动事件 滚轮滚动的距离

widget.bind(event, handler): 绑定事件,可绑定多个事件处理程序,新增加事件处理中在 bind 方法中增加 add=’+‘参数
`obj.unbind(’<xxx>’): 解除绑定,xxx 为绑定方式

事件类型

鼠标事件 说明
<Button-1> 左键单击
<Button-2> 中键单击
<Button-3> 右键单击
<Button-4> 滑轮上滚
<Button-5> 滑轮下滚
<Motion> 移动
<B1-Motion> 按住左键移动
<B2-Motion> 按住中键移动
<B3-Motion> 按住右键移动
<ButtonRelease-1> 放开左键
<ButtonRelease-2> 放开中键
<ButtonRelease-3> 放开右键
<Double-Button-1> 双击左键
<Double-Button-2> 双击中键
<Double-Button-3> 双击右键
<Enter> 进入 widget
<Leave> 离开 widget
键盘事件 说明
<FocusIn> 键盘焦点进入控件
<FocusOut> 键盘焦点离开控件
<Return> 按下 Enter 键,键盘所有键都可以绑定,如:Cancel/BackSpace/Next/Prior/F1~F12/
<Key> 某个键
<Shift-Up> Shift+Up
<Alt-Up> Alt+Up
<Ctrl-Up> Ctrl+Up
控件事件 说明
<Configure> 更改控件的大小和位置

Event

Protocols(通信协议)

单击内容窗口右上角的关闭按钮的通信协议名称为WM_DELETE_WINDOW

Protocols

 评论