Python图形化GUI — tkinter入门

 

Python 的图形用户界面库

1) PyGObject
PyGObject 库为基于 GObject 的 C 函数库提供了内省绑定,这些库可以支持 GTK+3 图形界面工具集,因此时 GObject 提供了丰富的图形界面组件。

2) PyGTK
PyGTK 基于老版本的 GTK+2 的库提供绑定,借助于底层 GTK+2 所提供的各种可视化元素和组件,同样可以开发出在 GNOME 桌面系统上运行的软件,因此它主要适用于 Linux/UNIX 系统。PyGTK 对 GTK+2 的 C 语言进行了简单封装,提供了面向对象的编程接口。其官方网址是http://www.pygtk.org/。

3) PyQt
PyQt 是 Python 编程语言和 Qt 库的成功融合。Qt 本身是一个扩展的 C++ GUI 应用开发框架,Qt 可以在 UNIX、Windows 和 Mac OS X 上完美运行,因此 PyQt 是建立在 Qt 基础上的 Python 包装。所以 PyQt 也能跨平台使用。

4) PySide
PySide 是由 Nokia 提供的对 Qt 工具集的新的包装库,目前成熟度不如 PyQt。

5) wxPython
wxPython 是一个跨平台的 GUI 工具集,wxPython 以流行的 wxWidgets(原名 wxWindows)为基础,提供了良好的跨平台外观。简单来说,wxPython 在 Windows上调用 Windows 的本地组件、在 Mac OS 上调用 Mac OS X 的本地组件、在 Linux 上调用 Linux 的本地组件,这样可以让 GUI 程序在不同的平台上显示平台对应的风格。wxPython 是一个非常流行的跨平台的 GUI 库。其官方网址是http://www.wxpython.org/。

如果有需要,则完全可以选择上面这些 Python GUI 库来开发图形用户界面。如果考虑开发跨平台的图形用户界面,则推荐使用 PyQt 或 wsPython。

6)tkinter
python编程语言内置库。Tkinter是Python默认的GUI库。它基于Tk工具包,该工具包最初是为工具命令语言(Tool Command Language, Tcl)设计的。TK普及后,被移植到很多其他的脚本语言中。在Python2中叫Tkinter,在Python3中叫tkinter;以下是一个实例

//显示一个图形界面
import tkinter as tk

win = tk.Tk()  # 创建主窗口
win.title('My Tkinter Window')  # 设置窗口标题
win.geometry('400x400')  # 设置界面大小
win.mainloop()  # 消息循环

tkinter的GUI组件之间的关系

使用 Tkinter 进行 GUI 编程与其他语言的 GUI 编程基本相似,都是使用不同的“积木块”来堆出各种各样的界面。因此,学习 GUI 编程的总体步骤大致可分为三步:

  1. 了解GUI 库大致包含哪些组件,就相当于熟悉每个积木块到底是些什么东西。
  2. 掌握容器及容器对组件进行布局的方法,就相当于掌握拼图的“母板”,以及母板怎么固定积木块的方法。
  3. 逐个掌握各组件的用法,则相当于深入掌握每个积木块的功能和用法。

Tkinter 的 GUI 组件有两个根父类,它们都直接继承了 object 类:

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

 

应用程序主窗口基类:

  1. 对于 Misc 和 Wm 两个基类而言,GUI 编程并不需要直接使用它们,但由于它们是所有 GUI 组件的父类,因此 GUI 组件都可以直接使用它们的方法。
  2. Misc 和 Wm 派生了一个子类 Tk,它代表应用程序的主窗口。因此所有 Tkinter GUI 编程通常都需要直接或间接使用该窗口类。

 

应用程序组件基类:

  1. BaseWidget 是所有组件的基类,它还派生了一个子类 Widget。Widget 代表一个通用的 GUI 组件,Tkinter 所有的 GUI 组件都是 Widget 的子类。
  2. 再来看 Widget 的父类。Widget 一共有四个父类,除 BaseWidget 之外,还有 Pack、Place 和 Grid,这三个父类都是布局管理器,它们负责管理所包含的组件的大小和位置。

剩下的就是图右边所显示的Widget 的子类了,它们都是Tkinter GUI编程的各种 UI 组件,也就是前面所说的各种“积木块”。

 

组件概览(已分类)

按钮相关类:

Button:按钮,代表按钮组件

Checkbutton:复选框,可供用户勾选的复选框

Listbox:列表框,列出多个选项,供用户选择

Radiobutton:单选钮,可供用户点边的单选钮

 

文本相关类:

Entry:单行输入框,用户可输入内容

Text :多行文本框,显示多行文本

 

框架(容器):

Toplevel 顶层 容器类,可用于为其他组件提供单独的容器;Toplevel 有点类似于窗口

Frame   容器 用于装载其它 GUI 组件

LabelFrame 容器 也是容器组件,类似于Frame,但它支持添加标题

 

控制条类:

Scale:滑动条     拖动滑块可设定起始值和结束值,可显示当前位置的精确值

Spinbox :微调选择器 用户可通过该组件的向上、向下箭头选择不同的值

Scrollbar:滚动条      用于为组件(文本域、画布、列表框、文本框)提供滚动功能

 

菜单类:

Menu:菜单 菜单组件

Menubutton:菜单按钮   用来包含菜单的按钮(包括下拉式、层叠式等)

OptionMenu:菜单按钮   Menubutton 的子类,也代表菜单按钮,可通过按钮打开一个菜单

 

Canvas:画布 提供绘图功能,包括绘制直线、矩形、椭圆、多边形、位图等

Label:标签 用于显示不可编辑的文本或图标

 

组件通用属性概览

颜色属性:

  1. activebackground:组件处于激活状态时的背景色;
  2. activeforeground:组件处于激活状态时的前景色;
  3. background(bg):组件正常显示时的背景色
  4. foreground(fg):组件正常显示时的前景色
  5. highlightbackground:组件在高亮状态下的背景色
  6. highlightcolor:组件在高亮状态下的前景色
  7. selectforeground:组在选中状态下的前景色
  8. selectbackground:组件在选中状态下的背景色
  9. disabledforeground:组件处于禁用状态时的前景色

 

文本属性:

  1. font:组件上显示的文本字体
  2. justify:组件内部内容的对齐方式;
  3. 可选值:支持LEFT(左对齐)、CENTER(居中对齐)或RIGHT(右对齐)这三个值
  4. relief:组件的3D 效果(组件内部相对于外部的外观样式);
  5. 可选值:RAISED、SUNKEN、FLAT、RIDGE、SOLID、GROOVE。
  6. text : 组件上显示的文本,文本显示格式由组件本身、anchor 及 justify 选项决定

状态属性:

state: 指定按钮的状态,可选值有正常(normal),激活(active),禁用(disabled)

 

位置属性:

anchor: 指定按钮上文本的位置,可选值:N, NE, E, SE, S, SW, W, NW, CENTER这些值之一。默认值是CENTER。

 

图像属性:

  1. bitmap:在组件上显示该选项指定的位图;

该选项值可以是Tk_GetBitmap接收的任何形式的位图。位图的显示方式受anchor、justify选项的影响。

如果同时指定了bitmap和text,那么bitmap 覆盖文本;如果同时指定了bitmap 和image,那么image 覆盖bitmap

  1. image:指定组件中显示的图像,如果设置了image 选项,它将会覆盖text、bitmap选项

 

光标属性:

cursor:指定光标在组件上的样式。可以是Tk_GetCursors 接受的任何格式

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值