Python图形用户界面编程讲座

Python图形用户界面编程讲座

图形用户界面(GUI、Graphical User Interface)是基于图形的界面,windows就是一个图形用户界面的操作系统,而DOS是基于字符命令交互的操作系统。图形用户界面由窗口构成,每个窗口都由标题、菜单、控制按钮、滚动条等元素组成。

图形用户界面(GUI)程序也成为桌面(Desktop)程序,是人机交互的图形化的程序。

用Python也可以写出漂亮的桌面程序, Python支持多种图形界面的库较多,常见的有:

☆ tkinter: tkinter 可以在大多数的 Unix 平台下使用,同样可以应用在 Windows 和 Macintosh 系统里。它是 Python 自带的 GUI 库,不需要安装,直接导入 tkinter 包即可使用。在此主要介绍tkinter库。

☆ wxPython:wxPython 是一款开源软件,是 Python 语言的一套优秀的 GUI 图形库,允许 Python 程序员很方便的创建完整的、功能键全的 GUI 用户界面。

☆ PyQt:优点界面美观,多个平台,文档和教程丰富。PyQt实现了一个Python模块集。它有超过300类,将近6000个函数和方法。它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。 PyQt采用双许可证,开发人员可以选择GPL和商业许可。在此之前,GPL的版本只能用在Unix上,从PyQt的版本4开始,GPL许可证可用于所有支持的平台。

 

可将一个窗口看成可被分解的一个空的容器,容器里装了大量的基本组件,通过设置这些基本组件的大小、位置等属性,将空的容器和基本组件组成一个整体的窗口。所以,可将图形界面编程看作是拼图游戏,创建图形用户界面的过程就是完成拼图的过程。

 

学习 GUI 编程的总体步骤可分为下面三步:

(1)、了解 GUI 库大致包含哪些组件,就相当于熟悉每个积木块到底是些什么东西。

(2)、掌握容器及容器对组件进行布局的方法。

(3)、逐个掌握各组件的用法,则相当于深入掌握每个积木块的功能和用法。

 

下面介绍使用tkinter来开发GUI编程。

tkinter是Python 自带的 GUI 库,不需要安装,直接导入 tkinter 包即可使用。

tkinter 的 GUI 组件(控件)之间的继承关系如下图:

tkinter 的 GUI 组件有两个根父类:1)、Misc:它是所有组件的根父类;2)、Wm:它主要提供了一些与窗口管理器通信的功能函数。

GUI 编程并不需要直接使用它们,但由于它们是所有 GUI 组件的父类,因此 GUI 组件都可以直接使用它们的方法。

Misc 和 Wm 派生了一个子类:Tk,它代表应用程序的主窗口。因此,所有 Tkinter GUI 编程通常都需要直接或间接使用该窗口类。

BaseWidget 是所有组件的基类,它还派生了一个子类:Widget。Widget 代表一个通用的 GUI 组件。Tkinter 所有的 GUI 组件都是Widget 的子类。

Widget 的父类有四个,除 BaseWidget 之外,还有 Pack、Place 和 Grid,这三个父类都是布局管理器,它们负责管理所包含的组件的大小和位置。

图中右边的 Widget 的子类,这些都是 Tkinter GUI 编程的各种 UI 组件。

 

Python图形用户界面编程讲座

 

tkinter的组件(控件、widget)及其属性简介

可以使用tkinter.Tk() 方法生成窗口(窗体),例如:

import Tkinter

w=tkinter.Tk()

import tkinter as tk

w=tk.Tk()

from Tkinter import *

w= Tk()

窗口(窗体)组件的属性

 

作用

实例

title

设置窗口标题

window.title‘xxxxx’

geometry

设置窗口大小,中间不能是*,而是x,加数调整窗口在屏幕上的位置,第1个加数是距离屏幕左边的宽,第2个加数是距离屏幕顶部的高。且有引号

window.geometry('600x400+300+200')

resizable

设置窗口是否可以变化高(height)、 宽(width),True为可以变化,False为不可变化

window.resizable(width=False, height=True)

window.resizable(0,1)   

mainloop

进入消息循环

window.mainloop()

quit

退出;

window.quit()

 

一个简单的例子、

import tkinter as tk

root = tk.Tk()

root.resizable(0,0)

root.geometry('600x400')

root.geometry('+300+200')

#可以将上两句何为root.geometry('600x400+300+200')

 

Python图形用户界面编程讲座