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還是能應付自如。

建立一個GUI程式

  • 1、匯入Tkinter模組

  • 2、建立控制項

  • 3、指定這個控制項的master, 也就是這個控制項屬於哪一個

  • 4、告訴GM(geometry manager)有一個控制項產生了。

實例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import Tkinter
top = Tkinter.Tk()
# 进入消息循环
top.mainloop()

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

1033.jpg

實例2:

#!/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()                 # 进入消息循环

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

1034.jpg

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是一個視窗佈局管理的插件,可以包含一個或多個子控制項。
LabelFramelabelframe 是一個簡單的容器控制項。常用與複雜的視窗佈局。
tkMessageBox用於顯示你應用程式的訊息框。

標準屬性

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

##控制項大小;Color控制項顏色;Font
屬性描述
#Dimension
##控制項字型;
#Anchor錨定點;
Relief控制項樣式;
Bitmap位圖;
Cursor遊標;

##幾何管理

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

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