Tkinter 是 python 内置的快速 GUI 开发模块,可用来在短时间内开发出 UI 界面,且是跨平台的,使用的都是所在操作系统的组件,缺点是可能有点丑。。。
我们开始吧,这里我把自己学到的东西记下,所以不一定全面,学到新东西会持续更新。
首先,学GUI要先想好要干嘛,因为这涉及到一个布置的问题,容易不知如何下手。
一般情况下,你要建一个窗口,然后在这个窗口里加一些东西,比如按钮,滚动条,等等
现在以一个实际情况来学习:
首先 导入 自带包 Tkinter
现在你要创建一个窗口,python里则是建立一个窗口对象: window = Tk()
在这个窗口上加标题:window.title('This is a title')
设置窗口大小:window.geometry('400x200') #注意中间的符号是字母 x,长和高
在这个窗口中加个按钮,首先要见一个按钮对象:button = Button(window,text = 'This is a button',command = a_function)
第一个参数:要放置的地方;第二个:按钮上的文字;第三个:触法按钮后要执行的函数
还可以接受背景颜色:bg;字体颜色:fg等参数
现在设置按钮在这个窗口中的摆放位置:button.pack(side = BOTTOM) #这里是个设置好的 BOTTOM 表示底部,TOP, BOTTOM, LEFT, RIGHT四个参数,分别指代上下左右。
pack()是Tkinter中一个简单的布局管理器,WidgetObject.pack(option, …),一般选项有,expand,side,fill
就是这么简单。
好了,到这,对如何使用有了一个大致了解,接下来介绍各种组件:
Label():
建立一个标签,参数和Button差不多,注意像这种东西使用时都必须 pack() 了之后才有,
就像你买了东西放在那里别人才看到
可接受参数 bitmap 显示一些特定的图标有:
* error
* hourglass
* info
* questhead
* question
* warning
* gray12
* gray25
* gray50
* gray75
bitmap = 'error' 即可,据说还可以显示些自己的图标,格式为: bitmap="@/path /bitmapname"
可接受参数 fg,bg 改变前景色与背景色,支持颜色单词如'red' 还有 #RRGGBB
可接受参数 width,height,调整label的宽度和高度
可接受参数 compound 指定文本(text)与图像(bitmap/image)是如何在 Label 上示, 缺省为 None. 记住总是图像相对于文字的位置,只有其一不影响
可以使用的值:
left: 图像居左
right: 图像居右
top: 图像居上
bottom:图像居下
center:文字覆盖在图像上
可接受参数:
wraplength: 指定多少单位后开始换行
justify: 指定多行的对齐方式 (left,right)
ahchor: 指定文本(text)或图像(bitmap/image)在 Label 中的显示位置
其中 ahchor 接受如下位置:
nw n ne
w center e
sw s se
Button :
主要要了解的就是参数:
接受参数 command 一个函数,事件处理
接受参数 relief 来设置 button 的外观 可选的有: FLAT,GROOVE ,RAISED ,RIDGE ,SOLID ,SUNKEN不用字符串
效果自己试一下就知道
同样接受 bitmap,compound,width,height,anchor,fg,bg,relief
接受参数 state 指定状态,:normal,active,disabled
接受参数 textvariable :使button与变量绑定,绑定之后 Button 上就会显示这个变量的文本
Entry:
没有 text 这一属性
接受参数 textvariable ,与变量绑定,在框中显示,比如字符串,但 这里必须是对象型的:s = StringVar(),然后用set()方法设置字符串内容
还有,StringVar() 是在 Tkinter 包内的,而且必须 已存在一个 Tk() 对象,才可声明成功,类似的还有:IntVar() 等
接受参数 state 设置状态,如只读:'readonly' 还有 normal/active/disabled等
另外说一下:设置这些属性,都可以与字典一样设置 : entry['state'] = 'readonly',不一定要初始化设置
接受参数 show 设置输入显示均为所设置字符,类似于密码输入框,可以设置为任意字符,超过一个以第一个为准
接受validate 限制输入的内容,暂时不知怎么用
还有其他的属性 fg/bg/relief/justify/state 使用方法与 Button 相同
要注意的是没有 width,height 属性