Tkinter是Python的标准GUI库,该模块内置在python的安装包中、只要安装好Python之后就能使用,Python3.x版本开始该模块使用首写字母T为小写的库名tkinter。

1、使用import tkinter或者from tkinter import *导入模块;

2、使用tkinter.Tk()创建一个根窗口(顶层窗口、root窗口),用于容纳后面创建的组件;

3、使用tkinter.Frame()创建框架组件或者使用tkinter.Toplevel()创建子窗口;

4、使用pack()、grid()或place()方法把框架组件或者子窗口放置到指定窗口的指定位置;

5、创建并设置各种组件的属性;

6、通过组件的pack()、grid()或place()方法把组件放置到指定窗口的指定位置;

Menu组件通过root.config(menu=MenuBar)方法显示

7、重复第3、4、5、6步骤直到所有的组件全部创建并放如到指定窗口中;

8、使用根窗口的mainloop()方法进入主事件循环。

根窗口的属性设置:

root.title('窗口的标题'):设置窗口标题,也可在创建时使用className参数来设置

root.resizable(0,0):框体大小可调性,分别表示x,y方向的可变性,只要不为0就表示可变,具体的数值大小没有实际意义

root.geometry('250x150'):指定初始化的窗口大小(长x宽)

root.geometry('+x+y'):打开窗口默认的窗口位置(相对于显示器左上角)

root.iconbitmap('**.ico'):设置窗口图标

root.quit():退出

root.update_idletasks()

root.withdraw():窗口隐藏

root.deiconify():窗口显示

root.update()刷新页面

root.maxsize():获取当前环境的最大窗口大小(返回宽高组成的元祖)

root.winfo_x():获取当前窗口左上角相对于显示器左上角的横坐标

root.winfo_x():获取当前窗口左上角相对于显示器左上角的纵坐标

root.winfo_screenwidth():获取当前环境的最大窗口宽

root.winfo_screenheight():获取当前环境的最大窗口高

tkinter中的组件

Button按钮组件;在程序中显示按钮。

Canvas画布组件;显示图形元素如线条或文本

Checkbutton复选组件;用于在程序中提供多项选择框

Entry输入组件;用于显示简单的文本内容

Frame框架组件;在屏幕上显示一个矩形区域,多用来作为容器,将几个组件组成一组

Label标签组件;可以显示文本和位图

Listbox列表框组件;在Listbox窗口小部件是用来显示一个字符串列表给用户

Menubutton菜单按钮组件,由于显示菜单项,它的功能完全可以使用Menu替代

Menu菜单组件;显示菜单栏,下拉菜单和弹出菜单

Message消息组件;与label比较类似,但是可以根据自身大小将文本换行;

Radiobutton单选按钮组件;显示一个单选的按钮状态

Scale范围组件;显示一个数值刻度,为输出限定范围的数字区间,滑块,允许通过滑块来设置一数字值

Scrollbar滚动条组件,当内容超过可视化区域时使用,配合使用canvas, entry, listbox, and text窗口部件的标准滚动条。

Text文本组件;用于显示多行文本

Toplevel容器组件;用来提供一个单独的对话框,和Frame比较类似,用来创建子窗口窗口组件

Spinbox输入组件;与Entry类似,但是可以指定输入范围值

所有组件都有一个位置参数master,该值默认为None,表示该组件将要放置到的窗口或框架名称,如果创建组件时不指定还可以在步骤6中放置组件时指定,其他的控制参数都是以关键字参数的形式传入。

tkinter中的可变变量

由于python中的字符串、整数、浮点数以及布尔值都是不可变的,所以tkinter自带了一些类型,可以就地更新,并可以在其值发生改变时通知相关的插件

IntVar:可变的int变量

StringVar:可变的str变量

BooleanVar:可变的布尔变量

DoubleVar:可变的double变量

且可变类型的值是通过set和get方法来设置和获得的。

组件的常用参数

几乎所有组件都有的参数,实际使用中可能有个别组件不存在某个属性。除了在实例化的时候传入参数设置某个属性外,还可以使用类似于字典的操作直接为某个属性设置值(组件实例对象["属性名"] = 值)

dimension:组件大小

width:组件宽度

height:组件高度

color:组件颜色

background(bg):背景色

borderwidth(bd):边框的宽度,默认值有系统指定,一般为1或2像素

foreground(fg):前景色(组件文本或位图的颜色)

disabledforeground:禁用前景色

font:组件的字体,('Times',10,'bold','italic')依次表示字体、字号、加粗、倾斜

anchor:组件中文本或图像的位置,可能的值有n,ne,e,se,s,sw,w,nw或者center(默认值),n表示上,e表示右,s表示下,w表示左(上北下南左西右东)

justify:组件中多行文本的对齐方式,可能的值有tkinter.LEFT/RIGHT/CENTER(默认值)

relief:组件边框的3D效果样式,可能的值groove, raised, ridge, solid, sunken或者flat(默认值)

takefocus:组件是否接受焦点,值为布尔值,默认False

image:组件上显示的图片(仅支持gif、pgm、ppm格式),使用PhotoImage组件实例对象赋值

photo=tkinter.PhotoImage(file='11.png')

one_label=tkinter.Label(root,text='测试文字',image=photo,compound=tkinter.CENTER)

bitmap:组件上显示的位图(仅支持xbm格式),如果设置了image则忽略该选项,使用BitmapImage组件实例对象赋值,和image的赋值类似。

compound:同时设置了组件的文本和图像时的混合模式,默认值(None)会显示图片忽略文字,为tkinter.CENTER时文本显示在图片上,为tkinter.TOP/RIGHT/BOTTOM/LEFT表示图片在文字的旁边(上边,右边,左边或下边)

cursor:指定鼠标移动到组件上的指针样式

padx:组件水平方向上的内间距,默认为1

padx:组件垂直方向上的内间距,默认为1

text:指定按钮上显示的文本,文本可以包含换行符'\n'

textvariable:显示tkinter变量,一般与StringVar变量配合着用,用于显示可变文本

change_text=tkinter.StringVar()

change_text.set('这是显示的可变文本内容')

one_label=tkinter.Label(root,textvariable=change_text)

show:文本框显示的字符,一般为Entry组件使用,不管输入什么值,显示的都是该值的第一个字符,一般设置为*用来表示输入密码;

state:设置组件的状态,可能的值有active, disabled或normal(默认值),readonly

default:设置组件的初始状态,可能的值active,normal或者disabled(默认值)

command:指定组件状态改变时的调用函数,默认是不传入任何参数的

def func1(*args,**kwargs): print(*args,**kwargs)

def fun2(): func2('option')

btn=Button(root,text="demo",command=fun1)

btn.pack()

#打印为空,所以没有传递任何参数

btn=Button(root,text="demo",command=fun2)

btn.pack()

#通过一个函数运行另一个函数,达到传一个固定的参数的目的

btn=Button(root,text="demo",command=lambda:fun1('option'))

btn.pack()

#通过lambda语句动态传入参数

activeforeground,activebackground:组件处于活动(通过state设置)时的前景色和背景色,Button组件表示按钮按下状态

disabledforeground,disabledbackground:组件不可用是的前景色和背景色

highlightbackground:组件没有获得焦点时的高亮边框颜色,默认值有系统指定,通常为标准的背景颜色

highlightcolor:组件获得焦点时的高亮边框颜色

highlightthickness:组件高亮边框的宽度,默认值是0(表示不显示高亮边框)

wraplength:指定文本每行的长度,每行多长换行显示,默认值为0

underline:配合text使用,指定text的文本字符划下划线,如值设置为2则表示第3个字符画上下划线,默认为-1

repeatdelay:重复延迟

repeatinterval:重复间隔

selectbackground:选定文本背景色

selectforeground:选定文本前景色

selectborderwidth:选择边框宽度

组件的常见方法:

configure(option=value)组件在实例化之后可以通过该函数修改某个参数的值,如通过configure(text=value)修改显示的文本

deselect()清除组件的状态

flash()在active和normal状态间切换若干次,但最终保持它开始时的状态

invoke()调用此方法来获得与单击更改其状态时发生的操作,通常是运行command指定的函数并返回函数的返回值

select()设置按钮为选中状态

toggle()选中与没有选中互相切换

Entry和Text输入组件的方法:

get()返回当前组件的显示字符串

icursor(index)在给定索引处的字符之前插入光标

index(index)移动entry的内容,使得给定索引处的字符是最左边的可见字符。如果文本在entry中刚好完全显示,则不起作用。

insert(index, s)将字符串s插入给定索引处的字符之前。

Text组件:

get(start_index,end_index)

insert(index,val)

'line.column':使用(行.列)的形式执行行和列(从0开始)

'line.end':某一行的末尾

'insert'(或tkinter.INSERT):当前光标的位置

'current'(或tkinter.CURRENT):与鼠标当前坐标最接近的位置,如果此时紧按鼠标任何一个按钮,会直接到你松开才相应。

'end'(或tkinter.END):对应Text组件的文本缓冲区最后一个字符的下一个位置

select_adjust(index)此方法用于确保选中的部分包含指定索引处的字符。

select_clear()清除选中的内容,如果当前没有选中的,则不起作用。

select_from(index)将ANCHOR索引位置设置为由索引选择的字符位置,并选择该字符。

select_present()如果有选择,则返回true,否则返回false。

select_range(start,end)在程序控制下设置选择。 选择从开始索引处开始的文本,但不包括结束索引处的字符。 起始位置必须在结束位置之前。

select_to(index)选择从ANCHOR位置开始的所有文本,但不包括给定索引处的字符。

xview(index 此方法在将Entry链接到水平滚动条时非常有用。

xview_scroll(number,what)用于水平滚动Entry。 参数必须是UNITS,按字符宽度滚动,或者按页面大小来滚动。 数字是从左到右滚动的正数,负数从右到左滚动。

单选框Radiobutton和复选框Checkbutton参数

selectcolor,selectimage:单选或复选框(文本前面的小圆圈或小方框)的背景颜色或图片

value:指定组件被选中中关联变量的值

variable:指定组件所关联的变量

indicatoron:特殊控制参数,当为0时,组件会被绘制成按钮形式

offvalue, onvalue:设置复选框组件选中和非选中的状态值(默认值为1或0)

单选框Radiobutton组件有组的概念,同一组内只能有一个按钮被选中,每当选中组内的一个按钮时,其它的按钮自动改为非选中态,绑定相同的变量的单选组件为同一组

var = IntVar()

R1 = Radiobutton(root, text="Option 1", variable=var, value=1)

R1.pack()

R2 = Radiobutton(root, text="Option 2",variable=var,value=2)

R2.pack()

R3 = Radiobutton(root, text="Option 3", variable=var, value=3)

R3.pack()

绘图Canvas的方法主要以下几种:

create_arc(x1,y1,x2,y2):直角+圆弧;

create_bitmap    绘制位图,支持XBM;

create_image    绘制图片,支持GIF(x,y,image,anchor);

create_line(x1,y1,x2,y2) 绘制直线;

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

create_polygon(x1,y1,...,xn,yn)   绘制多边形(坐标依次罗列,不用加括号,还有参数,fill,outline);

create_rectangle(x1,y1,x2,y2)   绘制矩形((a,b,c,d),值为左上角和右下角的坐标);

create_text 绘制文字(字体参数font,);

create_window   绘制窗口;

只要用create_*方法画了一个图形,就会自动返回一个id,将它赋值给一个变量,需要时就可以使用这个变量名

delete   删除绘制的图形;

itemconfig(id,**config) 修改图形属性,第一个参数为图形的ID,后边为想修改的参数;

move(id,x,y):移动图像,然后用root.update()刷新即可看到图像的移动

coords(uid):返回对象的位置的两个坐标(4个数字元组)

最后编辑:2020-08-25作者:qingheluo


这个作者貌似有点懒,什么都没有留下。