Python GUI編程 Tkinter
python gui編程 tkinter
python 提供了多個(gè)圖形開(kāi)發(fā)界面的庫(kù),幾個(gè)常用 python gui 庫(kù)如下:
- tkinter: tkinter 模塊(tk 接口)是 python 的標(biāo)準(zhǔn) tk gui 工具包的接口 .tk 和 tkinter 可以在大多數(shù)的 unix 平臺(tái)下使用,同樣可以應(yīng)用在 windows 和 macintosh 系統(tǒng)里。tk8.0 的后續(xù)版本可以實(shí)現(xiàn)本地窗口風(fēng)格,并良好地運(yùn)行在絕大多數(shù)平臺(tái)中。
- wxpython:wxpython 是一款開(kāi)源軟件,是 python 語(yǔ)言的一套優(yōu)秀的 gui 圖形庫(kù),允許 python 程序員很方便的創(chuàng)建完整的、功能健全的 gui 用戶(hù)界面。
- jython:jython 程序可以和 java 無(wú)縫集成。除了一些標(biāo)準(zhǔn)模塊,jython 使用 java 的模塊。jython 幾乎擁有標(biāo)準(zhǔn)的python 中不依賴(lài)于 c 語(yǔ)言的全部模塊。比如,jython 的用戶(hù)界面將使用 swing,awt或者 swt。jython 可以被動(dòng)態(tài)或靜態(tài)地編譯成 java 字節(jié)碼。
1. tkinter 編程
tkinter 是 python 的標(biāo)準(zhǔn) gui 庫(kù)。python 使用 tkinter 可以快速的創(chuàng)建 gui 應(yīng)用程序。
由于 tkinter 是內(nèi)置到 python 的安裝包中、只要安裝好 python 之后就能 import tkinter 庫(kù)、而且 idle 也是用 tkinter 編寫(xiě)而成、對(duì)于簡(jiǎn)單的圖形界面 tkinter 還是能應(yīng)付自如。
注意:python3.x 版本使用的庫(kù)名為 tkinter,即首寫(xiě)字母 t 為小寫(xiě)。
import tkinter
創(chuàng)建一個(gè)gui程序
- 1、導(dǎo)入 tkinter 模塊
- 2、創(chuàng)建控件
- 3、指定這個(gè)控件的 master, 即這個(gè)控件屬于哪一個(gè)
- 4、告訴 gm(geometry manager) 有一個(gè)控件產(chǎn)生了。
#!/usr/bin/python3 import tkinter top = tkinter.tk() # 進(jìn)入消息循環(huán) top.mainloop()
#!/usr/bin/python # -*- coding: utf-8 -*- import tkinter top = tkinter.tk() # 進(jìn)入消息循環(huán) top.mainloop()
以上代碼執(zhí)行結(jié)果如下圖:
#!/usr/bin/python # -*- coding: utf-8 -*- # python2.x 導(dǎo)入方法 from tkinter import * # 導(dǎo)入 tkinter 庫(kù) # python3.x 導(dǎo)入方法 #from tkinter import * root = tk() # 創(chuàng)建窗口對(duì)象的背景色 # 創(chuàng)建兩個(gè)列表 li = ['c','python','php','html','sql','java'] movie = ['css','jquery','bootstrap'] listb = listbox(root) # 創(chuàng)建兩個(gè)列表組件 listb2 = listbox(root) for item in li: # 第一個(gè)小部件插入數(shù)據(jù) listb.insert(0,item) for item in movie: # 第二個(gè)小部件插入數(shù)據(jù) listb2.insert(0,item) listb.pack() # 將小部件放置到主窗口中 listb2.pack() root.mainloop() # 進(jìn)入消息循環(huán)
以上代碼執(zhí)行結(jié)果如下圖:

2. tkinter 組件
tkinter的提供各種控件,如按鈕,標(biāo)簽和文本框,一個(gè)gui應(yīng)用程序中使用。這些控件通常被稱(chēng)為控件或者部件。
目前有15種tkinter的部件。我們提出這些部件以及一個(gè)簡(jiǎn)短的介紹,在下面的表:
控件 | 描述 |
---|---|
button | 按鈕控件;在程序中顯示按鈕。 |
canvas | 畫(huà)布控件;顯示圖形元素如線(xiàn)條或文本 |
checkbutton | 多選框控件;用于在程序中提供多項(xiàng)選擇框 |
entry | 輸入控件;用于顯示簡(jiǎn)單的文本內(nèi)容 |
frame | 框架控件;在屏幕上顯示一個(gè)矩形區(qū)域,多用來(lái)作為容器 |
label | 標(biāo)簽控件;可以顯示文本和位圖 |
listbox | 列表框控件;在listbox窗口小部件是用來(lái)顯示一個(gè)字符串列表給用戶(hù) |
menubutton | 菜單按鈕控件,用于顯示菜單項(xiàng)。 |
menu | 菜單控件;顯示菜單欄,下拉菜單和彈出菜單 |
message | 消息控件;用來(lái)顯示多行文本,與label比較類(lèi)似 |
radiobutton | 單選按鈕控件;顯示一個(gè)單選的按鈕狀態(tài) |
scale | 范圍控件;顯示一個(gè)數(shù)值刻度,為輸出限定范圍的數(shù)字區(qū)間 |
scrollbar | 滾動(dòng)條控件,當(dāng)內(nèi)容超過(guò)可視化區(qū)域時(shí)使用,如列表框。. |
text | 文本控件;用于顯示多行文本 |
toplevel | 容器控件;用來(lái)提供一個(gè)單獨(dú)的對(duì)話(huà)框,和frame比較類(lèi)似 |
spinbox | 輸入控件;與entry類(lèi)似,但是可以指定輸入范圍值 |
panedwindow | panedwindow是一個(gè)窗口布局管理的插件,可以包含一個(gè)或者多個(gè)子控件。 |
labelframe | labelframe 是一個(gè)簡(jiǎn)單的容器控件。常用與復(fù)雜的窗口布局。 |
tkmessagebox | 用于顯示你應(yīng)用程序的消息框。 |
3. 標(biāo)準(zhǔn)屬性
標(biāo)準(zhǔn)屬性也就是所有控件的共同屬性,如大小,字體和顏色等等。
屬性 | 描述 |
dimension | 控件大小; |
color | 控件顏色; |
font | 控件字體; |
anchor | 錨點(diǎn); |
relief | 控件樣式; |
bitmap | 位圖; |
cursor | 光標(biāo); |
4. 幾何管理
tkinter控件有特定的幾何狀態(tài)管理方法,管理整個(gè)控件區(qū)域組織,以下是tkinter公開(kāi)的幾何管理類(lèi):包、網(wǎng)格、位置
幾何方法 | 描述 |
pack() | 包裝; |
grid() | 網(wǎng)格; |
place() | 位置; |