您的位置:首页 > 编程语言 > Python开发

【pythonGUI专题】tkinter库的学习与使用(一)

2018-02-09 17:20 936 查看
tkinter是python的标准GUI库,无需额外下载,安装好python即可使用。

  先用一个实例来初步体会 tkinter 库的使用方法.

  

import tkinter
window = tkinter.Tk()       # 用Tk()方法创建主窗口
window.title(string = '窗口标题')
background = tkinter.Label(window,text = '窗口内容在此')
background.pack()           #pack()方法用来设置窗口位置,大小等选项
tkinter.Button(window,text=("关闭"),command= window.quit).pack(side='bottom')
window.mainloop()


  如果想让GUI应用程序能够在Windows下单独执行,必须将程序保存为.pyw文件,这样可以使用pythonw.exe来执行GUI应用程序,而不必打开python解释器,这样方便很多.

tkinter 包含15个控件, 这里列举出来方便忘记时查看:

控件名称控件说明
Button按钮控件;在程序中显示按钮。
Canvas画布控件;显示图形元素如线条或文本,用来画图形
Checkbutton多选框控件;用于在程序中提供多项选择框
Entry输入控件;单行文字域,用来收集键盘输入文本
Frame框架控件; 在屏幕上显示一个矩形区域,多用来作为其他控件的容器
Label标签控件; 定义一个文字或者是图片标签
Listbox列表框控件;一个选项列表, 用来显示一个字符串列表给用户, 用户可以从中选择
Menu菜单控件;用来定义菜单栏,下拉菜单和弹出菜单
Menubutton菜单按钮控件,用于显示菜单项。
Message消息控件;用来显示多行文本,与label比较类似, 用于定义对话框
Radiobutton单选按钮控件;定义一个单选的按钮
Scale范围控件;显示一个数值刻度,为输出限定范围的数字区间
Scrollbar滚动条控件,当内容超过可视化区域时使用,用于定义一个滚动条
Text文本控件;用于显示多行文本
Toplevel容器控件;和Frame比较类似,此控件有自己的最上层窗口,可以提供窗口管理接口
注意在tkinter中测量控件的大小都是默认以像素为单位的,如果要使用其他单位,要自己写上单位:

c(厘米), m(毫米), i(英寸), p(点, 1p = 1/72 i)

共有属性:

对于tkinter的每一个控件,都具有如下几个属性:

anchor定义控件在窗口内的位置或者文字信息在控件内的位置,可以是N, NE, E, SE, S, SW, W, NW 和CENTER
background(bg)定义控件的背景颜色,可以是16进制的RGB颜色区间[#000000,#ffffff],在windows环境下可以设置系统自带的”颜色名称常量”
bitmap定义显示在控件内的位图(bitmap图片文件)
borderwidth定义控件的边框宽度,单位为像素
command当控件有特定的动作发生时,定义这个属性(最常见的就是”关闭”按钮按下让窗口关闭)
cursor定义当鼠标指针移动到这个控件上的时候鼠标指针的类型(常见的有 crosshair,watch(等待常用),xterm(文本编辑),fleur(拖拽),arrow(默认))
font如果控件支持标题文字,那么就可以对文字进行设置.font属性是一个元组格式:(字体,大小,字体样式). 字体样式有如下选择: bold, italic, underline,overstrike
relief定义控件的边框形式,对于2D形式的边框,此属性可以是FLAT,SOLID,对于3D形式的边框,可以是 flat, groove, raised, ridge, solid, or sunken
variable将控件的数值映射给一个变量,由变量的类型来设置这个属性如StringVar, IntVar, DoubleVar, BooleanVar, 这些变量可以由get(),set()方法读取和设置
image定义显示在控件内的图片
justify定义多行文字标题的排列方式,可以是 left,right,center
padx, pady这是两个属性,用于定义控件内的文字与控件边框之间的水平或竖直距离,单位是像素
foreground(fg)定义控件的前景(文字)颜色
height对于Button,label或者Text控件,这个属性可以定义以”字符数目” 为单位的高度,其他控件则是以”像素”为单位
width与height对应,只不过是设置宽度
highlightbackground定义控件没有键盘焦点的时候,画highlight区域的颜色
highlightcolor定义控件由键盘焦点的时候,画highlight区域的颜色
highlightthickness定义highlight区域的宽度,单位是”像素”

设置tkinter控件的位置

设置控件的位置有以下几个方法:

pack() : 将控件设置在父控件之前,规划此控件在区块内的几何位置

grid() : 将控件设置在父控件之前,规划此控件成一个类似表格的架构

place() : 将控件放置在父控件的特定位置

下面简单的调用一下这些方法, 有个初步认识:

pack()方法

  pack()方法按照其内的属性设置,把控件放置在frame控件(窗体)或者窗口内。当设置了frame控件后,就可以把其他控件放入,Frame中储存控件的地方叫parcel

  可设置的属性:

 1. expand: 取值范围[0,1] 。可以让控件使用所有剩下的空间。当窗口大小改变的时候能让控件使用更多的空间。

 2. fill:取值[x,y,both,none(不改变)]。决定控件如何填满parcel控件,这个属性必须在 expand=1 的时候才会有作用 。

 3. ipadx, ipady: 此选项与fill选项共同使用,用于定义窗体内控件与窗体边界的距离,默认单位是像素,可以自己设置单位。

 4. padx, pady : 定义控件之间的距离

 5. side :定义控件放置的位置,可设置为 top, bottom, left, right

 

import tkinter

win = tkinter.T
4000
k() # main windows

# the first frame
framel = tkinter.Frame(win,relief='raised',borderwidth=4)
framel.pack(side = 'top' , fill = 'both', ipadx=10, ipady=10,expand=0)
tkinter.Button(framel,text = 'button 1').pack(side='left',padx=10,pady=10)
tkinter.Button(framel,text = 'button 2').pack(side='left',padx=10,pady=10)

framel = tkinter.Frame(win,relief='groove',borderwidth=2)
framel.pack(side = 'bottom' , fill = 'x', ipadx=10, ipady=10,expand=1)
tkinter.Button(framel,text = 'button 4').pack(side='left',padx=10,pady=10)
tkinter.Button(framel,text = 'button 5').pack(side='left',padx=10,pady=10)

framel = tkinter.Frame(win,relief='ridge',borderwidth=5)
framel.pack(side = 'right' , fill = 'y', ipadx=10, ipady=10,expand=1)
tkinter.Button(framel,text = 'button 3').pack(side='left',padx=10,pady=10)
tkinter.Button(framel,text = 'button 6').pack(side='left',padx=10,pady=10)

win.mainloop()


grid()方法

grid() 方法依照表格的行列方式放置在窗口或窗口内,具有以下属性:

1. row 设置在表格中的第几列

2. column 设置在表格的第几行

3. columnspan 设置控件在表格中合并行的数目

4. rowspan 设置控件在表格中合并列的数目

实例:

import tkinter
win = tkinter.Tk()
framel = tkinter.Frame(win,relief='raised',borderwidth=2)
framel.pack(side='top',fill='both',ipadx = 5,ipady=5,expand=1)
for i in range(5):
for j in range(5):
tkinter.Button(framel,text1='('+str(i+1)+','+str(j+1)+')').grid(row=i,column=j)
tkinter.Button(framel,text='test').grid(row=2,column=2)

tkinter.Button(framel,text='test2').grid(row=3,columnspan=4) #(只是挡住了下面的而已)
win.mainloop()


place() 方法

  place()方法设置控件在窗体或者窗口内的绝对位置或者相对位置,具有如下几个属性:

1. anchor : 定义控件在窗体或者窗口内的方位,可选择:‘n、ne、e、se、s、sw、w、nw、center’,默认是左上角nw

2. bordermode: 定义控件的坐标是否考虑边界宽度,分 outside 或者 inside

3. height,width:定义控件的高度和宽度,单位像素

4. x,y :定义控件的绝对水平位置

5. in: 定义控件相对于参考控件的位置

6. relheight,relwidth:定义控件相对于参考控件的高度或宽度

7. relx,rely: 定义控件相对与参考控件的水平,垂直距离

 

参考链接:

Tkinter 控件详细介绍

Python GUI编程(Tkinter)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gui tkinter