Python實現GUI簡單的來說可以調用Tkinter庫,這樣一般的需求都可以實現,顯示簡單的windows窗口代碼如下:
python_gui.py
1 #!C:\Python27\python.exe 2 # -*- coding:UTF-8 -*- 3 4 import Tkinter 5 6 def center_window(w = 300, h = 200): 7 ws = root.winfo_screenwidth() 8 hs = root.winfo_screenheight() 9 x = (ws/2) - (w/2) 10 y = (hs/2) - (h/2) 11 root.geometry("%dx%d+%d+%d" % (w, h, x, y)) 12 13 root = Tkinter.Tk(className='python gui') 14 center_window(500, 300) 15 root.mainloop()
第一行實現了,直接輸入文件名即可執行,不用手動指定python.exe的位置也可以,現在可以運行cmd來執行一下
可以看到,用cmd可以正常啟動該python GUI程序,關掉gui界面或者關掉命令行窗口后,程序都會自動結束,如果我們編寫了給普通用戶使用的程序該怎么做,一方面,我們應該拷貝python的安裝目錄過去,因為一般用戶計算機上沒有python環境,我們直接拷貝安裝目錄就可以,不用注冊表支持;另一方面,python GUI程序在運行時后面會伴隨着一個黑色的命令行窗口,這個總是不太好看,我們可以考慮隱藏,隱藏的方法如下:
首先編寫bat腳本啟動python源程序,腳本名稱:start.bat
1 @echo off 2 start /b C:\Python27\python.exe python_gui.py 3 exit
當然第二行啟動位置我們可以根據實際情況編寫,這樣直接運行start.bat就會啟動python程序但是會伴隨命令行窗口,所以不得不用一個比較low的方法,就是用vbs腳本把程序放到后台執行,編寫腳本start.vbs
Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c start.bat",vbhide
通過運行這個vbs腳本就可以只看到gui窗口,並且把cmd窗口隱藏掉了,到這里,我們想要的功能就實現了,最后可以用c語言編譯封裝成一個exe的可執行文件執行上述代碼即可實現調用,還可以編寫一個最終的啟動腳本來啟動vbs即可,比如run.bat
@echo off start start.vbs
雖然過程調用了好幾次,但是速度幾乎不受影響,並且又是客戶端使用,因此沒什么問題,這就是簡單的python GUI程序的調用方式,並且調用時會讓伴隨的命令行放到后台去執行
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()
以上代碼執行結果如下圖:
實例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() # 進入消息循環
以上代碼執行結果如下圖:
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類似,但是可以指定輸入范圍值 |
PanedWindow | PanedWindow是一個窗口布局管理的插件,可以包含一個或者多個子控件。 |
LabelFrame | labelframe 是一個簡單的容器控件。常用與復雜的窗口布局。 |
tkMessageBox | 用於顯示你應用程序的消息框。 |
標准屬性
標准屬性也就是所有控件的共同屬性,如大小,字體和顏色等等。
屬性 | 描述 |
Dimension | 控件大小; |
Color | 控件顏色; |
Font | 控件字體; |
Anchor | 錨點; |
Relief | 控件樣式; |
Bitmap | 位圖; |
Cursor | 光標; |
幾何管理
Tkinter控件有特定的幾何狀態管理方法,管理整個控件區域組織,一下是Tkinter公開的幾何管理類:包、網格、位置
幾何方法 | 描述 |
pack() | 包裝; |
grid() | 網格; |
place() | 位置; |
http://www.cnblogs.com/freeweb/p/5205119.html