Python GUI 程式設計(Tkinter)

Python 提供了多個圖形開發介面的庫,幾個常用 Python GUI 庫如下:

  • Tkinter: Tkinter 模組(Tk 介面)是 Python 的標準 Tk GUI 工具包的介面 .Tk 和 Tkinter 可以在大多數的 Unix 平臺下使用,同樣可以應用在 Windows 和 Macintosh 系統裡。Tk8.0 的後續版本可以實現本地視窗風格,並良好地執行在絕大多數平臺中。

  • wxPython:wxPython 是一款開源軟體,是 Python 語言的一套優秀的 GUI 圖形庫,允許 Python 程式設計師很方便的建立完整的、功能健全的 GUI 使用者介面。

  • Jython:Jython 程式可以和 Java 無縫整合。除了一些標準模組,Jython 使用 Java 的模組。Jython 幾乎擁有標準的Python 中不依賴於 C 語言的全部模組。比如,Jython 的使用者介面將使用 Swing,AWT或者 SWT。Jython 可以被動態或靜態地編譯成 Java 位元組碼。


Tkinter 程式設計

Tkinter 是 Python 的標準 GUI 庫。Python 使用 Tkinter 可以快速的建立 GUI 應用程式。

由於 Tkinter 是內建到 python 的安裝包中、只要安裝好 Python 之後就能 import Tkinter 庫、而且 IDLE 也是用 Tkinter 編寫而成、對於簡單的圖形介面 Tkinter 還是能應付自如。

注意:Python3.x 版本使用的庫名為 tkinter,即首寫字母 T 為小寫。

import tkinter

建立一個GUI程式

  • 1、匯入 Tkinter 模組
  • 2、建立控制元件
  • 3、指定這個控制元件的 master, 即這個控制元件屬於哪一個
  • 4、告訴 GM(geometry manager) 有一個控制元件產生了。

例項

#!/usr/bin/python # -*- coding: UTF-8 -*- import Tkinter top = Tkinter.Tk() # 進入訊息迴圈 top.mainloop()

以上程式碼執行結果如下圖:

tkwindow

例項

#!/usr/bin/python # -*- coding: UTF-8 -*- from Tkinter import * # 匯入 Tkinter 庫 root = Tk() # 建立視窗物件的背景色 # 建立兩個列表 li = ['C','python','php','html','SQL','java'] movie = ['CSS','jQuery','Bootstrap'] listb = Listbox(root) # 建立兩個列表元件 listb2 = Listbox(root) for item in li: # 第一個小部件插入資料 listb.insert(0,item) for item in movie: # 第二個小部件插入資料 listb2.insert(0,item) listb.pack() # 將小部件放置到主視窗中 listb2.pack() root.mainloop() # 進入訊息迴圈

以上程式碼執行結果如下圖:


Tkinter 元件

Tkinter的提供各種控制元件,如按鈕,標簽和文字框,一個GUI應用程式中使用。這些控制元件通常被稱為控制元件或者部件。

目前有15種Tkinter的部件。我們提出這些部件以及一個簡短的介紹,在下面的表:

控制元件描述
Button按鈕控制元件;在程式中顯示按鈕。
Canvas畫布控制元件;顯示圖形元素如線條或文字
Checkbutton多選框控制元件;用於在程式中提供多項選擇框
Entry輸入控制元件;用於顯示簡單的文字內容
Frame框架控制元件;在螢幕上顯示一個矩形區域,多用來作為容器
Label標簽控制元件;可以顯示文字和點陣圖
Listbox列表框控制元件;在Listbox視窗小部件是用來顯示一個字串列表給使用者
Menubutton選單按鈕控制元件,由於顯示選單項。
Menu選單控制元件;顯示選單欄,下拉選單和彈出選單
Message訊息控制元件;用來顯示多行文字,與label比較類似
Radiobutton單選按鈕控制元件;顯示一個單選的按鈕狀態
Scale範圍控制元件;顯示一個數值刻度,為輸出限定範圍的數字區間
Scrollbar滾動條控制元件,當內容超過視覺化區域時使用,如列表框。.
Text文字控制元件;用於顯示多行文字
Toplevel容器控制元件;用來提供一個單獨的對話方塊,和Frame比較類似
Spinbox輸入控制元件;與Entry類似,但是可以指定輸入範圍值
PanedWindowPanedWindow是一個窗口布局管理的外掛,可以包含一個或者多個子控制元件。
LabelFrame labelframe 是一個簡單的容器控制元件。常用與復雜的窗口布局。
tkMessageBox用於顯示你應用程式的訊息框。

標準屬性

標準屬性也就是所有控制元件的共同屬性,如大小,字型和顏色等等。

屬性 描述
Dimension 控制元件大小;
Color 控制元件顏色;
Font 控制元件字型;
Anchor 錨點;
Relief 控制元件樣式;
Bitmap 點陣圖;
Cursor 游標;

幾何管理

Tkinter控制元件有特定的幾何狀態管理方法,管理整個控制元件區域組織,一下是Tkinter公開的幾何管理類:包、網格、位置

幾何方法 描述
pack() 包裝;
grid() 網格;
place() 位置;