Python GUI编程(Tkinter)
Python 提供了多個圖形開發界面的庫,其中
Tkinter: Tkinter 模塊(Tk 接口)是 Python 的標準 Tk GUI 工具包的接口 ,Tk 和 Tkinter 可以在大多數的 Unix 平臺下使用,同樣可以應用在 Windows 和 Macintosh 系統里。
Tkinter 是 Python 的標準 GUI 庫。Python 使用 Tkinter 可以快速的創建 GUI 應用程序。由于 Tkinter 是內置到 python 的安裝包中、只要安裝好 Python 之后就能 import Tkinter 庫。
創建一個GUI程序
1、導入 Tkinter 模塊
2、創建控件
3、指定這個控件的 master, 即這個控件屬于哪一個
4、告訴 GM(geometry manager) 有一個控件產生了。
在GUI程序中,我們會有一個頂層窗口,在這個頂層窗口上可以包括所有的小窗口對象,像標簽,按鈕,列表框等等,也就是說頂層窗口是放置其他窗口或者控件的地方。然后我們就可以在這個根窗口上設置“組件”了。通常這些組件會有一些相應的行為,比如鼠標點擊,按下等等,這些稱為事件,而程序會根據這些時間采取相應的反應,稱為回調。這個過程成為事件驅動。所有的創建和放置完畢后,就立刻進入主循環,代碼如下:Tkinter.mainloop( )
實例(1):
# -*- coding: utf-8 -*--from Tkinter import * # 導入 Tkinter 庫 root = Tk() # 創建窗口對象的背景色li= ['C','python','php','html','SQL','java'] # 創建兩個列表 movie = ['CSS','jQuery','Bootstrap'] listb1 = Listbox(root) # 創建兩個列表組件 listb2 = Listbox(root) for item in li: # 第一個小部件插入數據listb1.insert(0,item) for item in movie: # 第二個小部件插入數據listb2.insert(0,item) listb1.pack() # 將小部件放置到主窗口中 listb2.pack() root.mainloop() # 進入消息循環結果:
Tkinter 組件
kinter的提供各種控件,如按鈕,標簽和文本框,一個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控件有特定的幾何狀態管理方法,管理整個控件區域組織,Tk提供了三個管理器來幫助我們,以下是Tkinter公開的幾何管理類:包、網格、位置。
pack() 包裝;是用來管理和顯示組件的
Pack使用很簡單,就是w.pack(option)。常用的option有:
Side :表示把組件放到哪一邊,TOP(上),BOTTOM(下),LEFT,RIGHT
Padx和pady :表示parcel的每一個邊和組件的預留空間。
Ipadx和ipady:表示組件的每一個邊和他包含的內容之間的預留空間。
Anchor:表示在parcel放置組件的方式,缺省時CENTER。
grid() 網格
使用方法和pack類似。
place() 位置
精確的擺放一個組件的位置,一般不太用。
參考:http://www.runoob.com/python/python-gui-tkinter.html
實例 (2)
這里用的是pyhton 3.6 ,和python 2的區別在于此處是from tkinter import *而不是Tkinter
from tkinter import * #導入tkinter模塊的所有內容 from tkinter import messagebox # 必須重新加載這個模塊# GUI程序的框架Frame class Application(Frame): # 定義Application類,派生于Frame類 def __init__(self,master=None): # 構造函數 Frame.__init__(self,master) self.pack() self.createWidgets() # 聲明對象方法,創建子組件 def createWidgets(self): self.btnSayHi=Button(self) # 創建Button按鈕組件 self.btnSayHi["text"]="Hello" self.btnSayHi["command"]=self.sayHi # 設置命令屬性,綁定事件處理函數 self.btnSayHi.pack() # 調用pack()方法調整位置和大小 self.btnQuit=Button(self,text="Quit",command=root.destroy) # 創建Quit按鈕 self.btnQuit.pack() def sayHi(self): messagebox.showinfo("Message","Hello World!") # 彈出消息窗口 # pack幾何布局管理器 root=Tk();root.title("登錄 1") #窗口標題 f1=Frame(root);f1.pack() #界面分為三個Frame f2=Frame(root);f2.pack() f3=Frame(root);f3.pack() Label(f1,text="用戶名").pack(side=LEFT) #標簽放置在f1中,左停靠 Entry(f1).pack(side=LEFT) #單行文本框放置在f1中,左??? Label(f2,text="密 碼").pack(side=LEFT) #標簽放置在f2中,左停靠 Entry(f2,show="*").pack(side=LEFT) #單行文本框放置在f2中,左停靠 Button(f3,text="取消").pack(side=RIGHT) #取消按鈕放置在f3中,右??? Button(f3,text="登錄").pack(side=RIGHT) #登錄按鈕放置在f3中,右??? root.mainloop() root_1=Tk() # 創建一個tk根窗口組件root app=Application(master=root_1) # 聲明Application對象實例 app.mainloop() # 調用組件mainloop()方法,進入事件循環 # grid幾何布局管理器 root_2 =Tk() Button(root_2,text="1").grid(row=0,column=0) #按鈕1放置于0行0列 Button(root_2,text="2").grid(row=0,column=1) #按鈕1放置于0行1列 Button(root_2,text="3").grid(row=0,column=2) Button(root_2,text="4").grid(row=1,column=0) Button(root_2,text="5").grid(row=1,column=1) Button(root_2,text="6").grid(row=1,column=2) Button(root_2,text="7").grid(row=2,column=0) Button(root_2,text="8").grid(row=2,column=1) Button(root_2,text="9").grid(row=2,column=2) Button(root_2,text="0").grid(row=3,column=0,columnspan=2,sticky=E+W) #跨兩列,左右緊貼 Button(root_2,text=".").grid(row=3,column=2,sticky=E+W) #左右緊貼 root_2.mainloop() # 事件循環 # place幾何布局管理器,需要提前設計好窗口的大小,以及各組件的位置大小。 root_3=Tk();root_3.title("登錄 2") root_3['width']=200;root_3['height']=80 #窗口寬度高度 Label(root_3,text="用戶名",width=6).place(x=1,y=1) #絕對坐標(1,1) Entry(root_3,width=20).place(x=45,y=1) Label(root_3,text="密 碼",width=6).place(x=1,y=20) Entry(root_3,width=20,show='*').place(x=45,y=20) Button(root_3,text="登錄",width=8).place(x=40,y=40) Button(root_3,text="取消",width=8).place(x=110,y=40) root_3.mainloop()運行結果:
參考:http://blog.csdn.net/u013232740/article/details/47037973
總結
以上是生活随笔為你收集整理的Python GUI编程(Tkinter)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我国的传统节日有哪些?有什么特点怎么做成
- 下一篇: 2022年北京体育大学招生计划及招生人数