GUI英文全称是Graphical User Interface,中文是图形用户接口,可以让用户与计算机进行沟通。
tkinter是一个开放源码的图形接口开发工具,原来是用TCL(Tool Command Language,工具命令语言)编写的GUI函数库,最初发展是从1991年开始的,具有跨平台的特性。tkinter工具提供许多图形接口,例如标签(Label)、菜单(Menu)、按钮(Button)等。
目录
1.建立窗口
首先导入模块
from tkinter import *
然后用下列方式建立窗口
root = Tk()
root.mainloop()
窗口有时候也称为容器
1.1窗口属
方法 | 说明 |
title() | 可以设置窗口的标题 |
geometry(“widthxheight+x+y”) | 设置窗口宽width与高height,单位是像素pixel,设定窗口位置 |
maxsize(width,height) | 拖曳时可以设置窗口最大的宽与高 |
minsize(width,height) | 拖曳时可以设置窗口最小的宽与高 |
configure(bg=”color”) | 设置窗口的背景颜色 |
resizable(True,True) | 可设置是否更改窗口大小,第一个参数是宽,第二个参数是高,如果要固定宽与高,可以使用resizable(0,0) |
state(“zoomed”) | 最大化窗口 |
iconify() | 最小化窗口 |
iconbitmap(“xx.ico”) | 更改默认窗口图标 |
示例:
from tkinter import *
root = Tk()
root.title("Hello world") # 更改窗口标题
root.iconbitmap("1.ico") # 设置窗口图标
root.geometry("500x500") # 设置窗口大小
root.configure(bg = 'pink') # 设置窗口颜色
root.mainloop()
1.1.1窗口位置设置
root.geometry("200x100+100+500") # 距离屏幕左上角(100,500)
上述widthxheight说明窗口的宽和高,width与height用字母x分隔;+x+y表示距离屏幕左上角的位置,如果是-x-y表示距离屏幕右下角的位置
在tkinter模块可以使用下列方法获得屏幕的宽度和高度:
winfo_screenwidth()
winfo_screengeight()
示例:将窗口放置在屏幕中央
from tkinter import *
root = Tk()
screenwid = root.winfo_screenwidth() # 获得屏幕宽度
screenhei = root.winfo_screenheight() # 获得屏幕高度
w = 500
h = 500
x = (screenwid - w) / 2
y = (screenhei - h) /2
a = 3
root.geometry("%dx%d+%d+%d" % (w,h,x,y))
root.mainloop()
2.tkinter的Widget
Widget可以翻译为控件或组件或部件。窗口建立完成后,下一步是在窗口内建立控件,这些控件称为Widget。具体的控件参考我的博客(Tkinter图形界面应用)
在tkinter中所有的Widget其实都是面向对象的类,我们通过调用构造方法来达到建立相关控件的目的
Tkinter在后来也推出了加强版的模块,称为tkinter.ttk,有时候简称ttk,这个模块有17个widget,新增的模块有:
Combobox
Notebook
Progressbar
Separator
Sizegrip
Treeview
使用ttk可以有更好的外观,而且可以跨平台使用,不过没有100%兼容。例如,fg、bg参数或一些外观相关的参数tk和ttk是不相同。ttk使用的是ttk.Style类别
2.1Widget的共同属性
Dimensions:大小
Colors:颜色
Fonts:字形
Anchor:锚(位置参考点)
Relief styles:属性边框
Bitmaps:显示位图
Cursors:鼠标外形
2.2widgets的共同方法
2.2.1Configuration
(1)config(option=value):Widget属性可以在建立时设置,也可以在程序执行时使用config重新设置
(2)cget("option"):取得option参数值
(3)keys():可以用此方法获得所有该Widget的参数
2.2.2Event Processing
(1)mainloop():让程序继续执行,同时进入等待与处理窗口事件
(2)quit():Python Shell窗口结束,但是所建窗口继续执行
(3)update():更新窗口画面
2.2.3Event callbacks
(1)bind(event,callback):事件绑定
(2)unbind(event):解除绑定
2.2.4Alarm handlers
after(time,callback):间隔指定时间后调用callback()