python中tkinter模块
qingheluo2020-07-13清河洛289
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()方法把框架组件或者子窗口放置到指定窗口的指定位置;
...
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:指定按钮上显示的文本,文本可以包含换行符‘‘ 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个数字元组)