Python图形编程

2015/04/14 Python

Python图形编程

Python提供了多种程序包来支持图形用户界面的编写,因而创建完整与功能齐全的图形用户界面非常快捷。

GUI tkinter程序包

Python提供了多种程序包来支持图形用户界面(Graphical User Interface,GUI)的编写,本章的内容以GUI tkinter程序包为主,除了主窗口对象之外,还有其他图形用户界面的窗口程序控件,例如Label、Entry、Text、Button、Checkbutton、Radiobutton。另外,还包含标准对话框、以Menu控件制作菜单和快捷菜单以及用Canvas控件绘制图形。本章最后将使用图形用户界面来实现一个具有简易计算器功能的程序。

图形用户界面是指使用图形方式显示用户操作的界面。图形界面和命令行界面相比,前者无论是在操作上还是视觉上都更容易被用户接受。tkinter是Tool Kit Interface的缩写,tkinter程序包是一种内建的标准模块,在安装Python 3时会被一同安装到系统中。另外,tkinter允许用户在不同的操作平台下构建图形用户界面,下面先来看看它的用法。

导入tkinter程序包

与前面所介绍的模块一样,使用前必须先导入这个模块。

import tkinter

我们也可以替它取一个别名,使用时更为方便。例如想以tk作为tkinter的别名,可以使用如下导入语句:

import tkinter as tk

如果所导入的模块设置了别名,当调用tkinter提供的函数时,可以直接使用别名来调用,格式如下:

tk.函数名称()

创建主窗口

图形用户界面的最外层是一个窗口对象,我们称之为主窗口,创建好主窗口之后,就可以在主窗口加入标签、按钮等窗口内部的控件。创建主窗口的语法如下:

主窗口名称 = tk.Tk()

例如窗口名称为win,创建主窗口的语句如下:

win = tk.Tk()

窗口的大小并不是一定要设置,如果没有提供主窗口大小的信息,就默认以窗口内部的控件来决定窗口的宽与高。另外,如果没有设置窗口的标题,就默认为“tk”。

当主窗口设置完成之后,还必须在程序最后调用mainloop()方法,让程序进入循环监听模式来监听用户触发的“事件(Event)”,一直到关闭窗口为止。语法如下:

win.mainloop()

前面已经完整说明了创建一个空窗口的流程,下面列出创建窗口的完整程序。

import tkinter as tk
win = tk.Tk()
win.geometry("300x100")
win.title("窗口标题")
win.mainloop()

执行这个tk_main.py程序,就能看到窗口,窗口右上角有标准窗口的缩小、放大以及关闭按钮,还能够通过拖曳边框来调整窗口大小。

布局方式

前面创建的窗口是空的窗口,还必须放入与用户互动的控件,这些控件并不能随意乱放,必须按照tkinter的布局方式。一共有3种布局方式,对应的布局方法是pack、grid以及place。

pack方法

pack方法默认以自上而下的方式摆放控件。

位置和长宽的单位都是像素。下面的范例程序通过调用pack方法将3个按钮加入窗口中,按钮控件中的width属性是指按钮控件的宽度,而text属性为按钮上的文字。

import tkinter as tk
win = tk.Tk()
win.geometry("300x100")
win.title("pack")
btn1=tk.Button(win, width=25, text="这是按钮1")
btn1.pack()
btn2=tk.Button(win, width=25, text="这是按钮2")
btn2.pack()
btn3=tk.Button(win, width=25, text="这是按钮3")
btn3.pack()
win.mainloop()

grid方法

grid方法用于以表格方式摆放控件

下面的范例程序调用grid方法将4个按钮加入窗口。

import tkinter as tk
win = tk.Tk()
win.geometry("300x100")
win.title("grid")
btn1=tk.Button(win, width=20, text="这是按钮1")
btn1.grid(column=0,row=0)
btn2=tk.Button(win, width=20, text="这是按钮2")
btn2.grid(column=0,row=1)
btn3=tk.Button(win, width=20, text="这是按钮3")
btn3.grid(column=1,row=0)
btn4=tk.Button(win, width=20, text="这是按钮4")
btn4.grid(column=2,row=1)
win.mainloop()

place方法

place方法是通过控件在窗口中的绝对位置与相对位置来指定控件的摆放位置。相对位置的方法是将整个窗口宽度视为“1”,窗口中间的位置对应的参数relx是0.5,高度是一样的,以此类推。

下面的范例程序调用place方法将3个按钮加入窗口。

import tkinter as tk
win = tk.Tk()
win.geometry("300x100")
win.title("place")
btn1=tk.Button(win, width=20, text="这是按钮1")
btn1.place(x=0, y=0)
btn2=tk.Button(win, width=20, text="这是按钮2")
btn2.place(relx=0.5, rely=0.5, anchor="center")
btn3=tk.Button(win, width=20, text="这是按钮3")
btn3.place(relx=0.5, rely=0.7)
win.mainloop()

图形用户界面控件

Search

    微信好友

    博士的沙漏

    Table of Contents