GUI英文全称是Graphical User Interface,中文为图形用户接口。

tkinter是pythonGUI编程的一个库。

主要分为三步,

  1. 首先建立一个窗口(设置参数),
  2. 然后在窗口上放置组件(文本框、按钮、菜单,滚动条之类的),
  3. 还有就是对组件的位置布局。

一、建立窗口

通常将使用Tk( )方法建立的窗口称为根窗口,之后可以在此根窗口中建立许多控件,也可以在此根窗口中建立上层窗口。

mainloop( )方法可以让程序继续执行,同时进入等待与处理窗口事件,单击窗口右上方的“关闭”按钮,此程序才会结束。

from tkinter import *
root = Tk()
root.mainloop()

注 在GUI程序设计中,有时候也将上述所建立的窗口(window)称为容器(container)。

窗口设置

image

背景颜色

除了可以使用名称直接设置色彩,还可以使用十六进制方式设置色彩RGB,其中每个色彩用两个十六进制数字表示。

from tkinter import *
root = Tk()
root.configure(bg='#00ff00') # 背景色
root.iconbitmap('mystar.ico') # 图标
root.mainloop()

窗口的位置和大小

geometry( )方法除了可以设置窗口的大小,也可以设置窗口的位置,此时它的语法格式如下。

geometry(widthxheight+x+y)

上述widthxheight已说明是窗口的宽和高,

width与height用x分隔。

“+x”表示x是窗口左边距离屏幕左边的距离,

如果是“-x”,则表示x是窗口右边距离屏幕右边的距离。

“+y”表示y是窗口上边距离屏幕上边的距离,

如果是“-y”则表示y是窗口下边距离屏幕下边的距离。

from tkinter import *
root = Tk()
root.geometry("300x160+400+200")
root.configure(bg='#00ff00')
root.mainloop()

在tkinter模块中可以使用下列方法获得屏幕的宽度和高度。

screenwidth  = root.winfo_screenwidth()
screenheight  = root.winfo_screenheight()

# 将窗口放在屏幕中间

from tkinter import *
root = Tk()
screenwidth  = root.winfo_screenwidth()
print(screenwidth)
screenheight  = root.winfo_screenheight()
print(screenheight)
wid = 300
hei = 160
x = int((screenwidth-wid)/2)
y = int((screenheight-hei)/2)
root.geometry(f'{wid}x{hei}+{x}+{y}')
root.mainloop()

二、tkinter的Widget

Widget可以翻译为控件或组件或部件。窗口建立完成后,下一步是在窗口内建立控件,我们将这些控件统称为Widget。

(1)Button(按钮)

(2)Canvas(画布)

(3)Checkbutton(多选按钮):

(4)Entry(文本框)

(5)Frame(框架)

(6)Label(标签):

(7)LabelFrame(标签框架)

(8)Listbox(列表框)

(9)Menu(菜单):

(10)MenuButton(菜单按钮):这个是过时的控件,已经被Menu( )取代。

(11)Message(消息)

(12)OptionMenu(下拉式菜单)

(13)PanedWindow(面板)

(14)Radiobutton(单选按钮)

(15)Scale(尺度)

(16)Scrollbar(滚动条):

(17)Spinbox(可微调输入控件)

(18)Text(文字区域):(18)Text(文字区域):

tkinter在后来也推出了加强版的模块,称为tkinter.ttk,有时简称ttk

这个模块中有17Widget。下列是ttk模块新增的**Widget。

(1)Combobox:(2)Notebook:(3)Progressbar:

(4)Separator:(5)Sizegrip:(6)Treeview:

导入上述模块可以使用下列方式。

from tkinter import ttk
  • 使用ttk可以有更好的外观,而且也可以跨平台使用,不过并没有100%兼容。
  • 例如,fg、bg参数或一些外观相关的参数tk和ttk是不相同。
  • ttk使用的是ttk.Style类别。

Widget的共同属性

Dimensions:大小,

Colors:颜色,

Fonts:字形,

Anchor:锚(位置参考点),

Relief styles:属性边框,

Bitmaps:显示位图,

Cursors:鼠标外形

Widget的共同方法

Configuration

  • (1)config(option=value):Widget属性可以在建立时设置,也可以在程序执行时使用config( )重新设置,
  • (2)cget("option"):取得option参数值,
  • (3)keys( ):可以用此方法获得所有该Widget的参数,

Event Processing

  • (1)mainloop( ):让程序继续执行,同时进入等待与处理窗口事件,相
  • (2)quit( ):Python Shell窗口结束,但是所建窗口继续执行,
  • (3)update( ):更新窗口画面,

Event callbacks

  • (1)bind(event,callback):事件绑定,
  • (2)unbind(event):解除绑定,

Alarm handlers

  • after(time,callback):间隔指定时间后调用callback( )方法

窗口控件配置管理员

一个实用的程序中一定是一个窗口含有多个Widget控件,

这时就会牵涉应如何将这些Widget控件配置到容器或窗口内。

在设计GUI程序时,可以使用三种方法包装和定位各组件在容器或窗口内的位置,

这三个方法又称窗口控件配置管理员(Widget Layout Manager)。

(1)pack方法: (2)grid方法: (3)place方法:

具体怎么配置,再去查