<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在最早程式的設計中,程式和使用者的互動都是通過控制檯來完成的,而GUI(Graphics User Interface),即圖形使用者程式設計,是Python 所提供的一個豐富的元件,可以快速的實現使用圖形介面和使用者互動。
tkinter(TK interface)是Python內建的標準GUI庫,支援跨平臺的GUI程式開發,tkinter 適合小型的GUI程式編寫,也特別適合初學者學習GUI程式設計。
wxPython是比較流行的GUI庫,適合大型應用程式開發,功能強於tkinter,整體設計框架類似於MFC(Microsoft Foundation Classes 微軟基礎類庫)。
Qt是一種開源的GUI庫,適合大型GUI程式開發,PyQT是Qt工具包標準的Python實現,我們可以使用Qt Dseginer 介面設計器快速開發GUI應用程式。
1.建立應用程式主視窗物件——通過類Tk的無參建構函式
from tkinter import * from tkinter import messagebox root = Tk()
2.在主視窗中,新增各種視覺化元件,比如:按鈕(Button) 文字方塊(Label)等。
btn01 = Button(root) btn01["text"] = "創作不易,點個贊再走唄"
3.通過幾何佈局管理器,管理元件的大小和位置
btn01.pack()
4.事件處理
通過繫結事件處理程式,響應使用者操作所觸發的事件(比如:單擊、雙擊等)
def dianzai(e): messagebox.showinf("Message","點個贊,讓你關注我") print("點一個贊") btn01.bind("<Button>",dainzan)
通過geometry(wxh +/- x +/- y)進行設定,w為寬度,h為高度。+x表示距螢幕左邊的距離,-x表示距螢幕右邊的距離,+y表示螢幕上邊的距離,-y表示螢幕下邊的距離。表示寬度500,高度300,距左邊100個畫素,距上邊100個畫素。
root.title = ("來點贊呀") # 建立標題 root.geometry("500x300+100+100")
基於上述功能,程式碼實現如下:
from tkinter import * from tkinter import messagebox root = Tk() # 建立主視窗 root.title = ("來點贊呀") # 建立標題列 root.geometry("500x300+100+100") btn01 = Button(root) # 建立一個btn01物件設定,將視窗放進去 btn01["text"] = "創作不易,點個贊再走唄" btn01.pack() # 呼叫佈局管理器,將元件物件合理的放入視窗中 def dian_zan(e): # e 封裝的事件物件 messagebox.showinfo("Message", "點個贊") print("點個贊") btn01.bind("<Button>", dian_zan) # 繫結事件 root.mainloop() # 呼叫元件的mainloop()方法,進入事件迴圈
顯示如下:
圖形化使用者介面是由一個個元件組成的,有的元件還能在元件裡邊放置其他的元件,我們成為容器,Tkinter GUI元件關係如下:
接下來,我們在程式碼中檢視物件的繼承關係圖,以button為例:ctrl + 滑鼠左鍵,跳入button中,然後滑鼠右鍵,檢視繼承結構圖如下:
TKinter類 | 名稱 | 簡介 |
Toplevel | 頂層 | 容器類,可用於為其他元件提供單獨的容器;Toplevel有點類似於視窗 |
Button | 按鈕 | 代表按鈕元件 |
Canvas | 畫布 | 提供繪圖功能,包括直線、矩形、橢圓、多邊形、點陣圖等。 |
Checkbutton | 核取方塊 | 可供使用者勾選的核取方塊 |
Entry | 單行輸入框 | 使用者可輸入內容 |
Frame | 容器 | 用於載入其它GUI元件 |
Label | 標籤 | 用於顯示不可編輯的文字或圖示 |
LabelFrame | 容器 | 也是容器元件,類似於Frame,但他支援新增標題 |
Listbox | 列表框 | 列出多個選項,供使用者選擇 |
Menu | 選單 | 選單元件 |
Menubutton | 選單按鈕 | 用來包含選單的按鈕(包括下拉式、層疊式等) |
OptionMenu | 選單按鈕 | Menubutton的子類,也代表選單按鈕,可通過按鈕開啟一個選單 |
Message | 選單按鈕 | 類似於標籤,但是可以顯示多行文字,後來當Label也能顯示 |
GUI應用程式的主要結構,採用的物件導向的方式,更加合理的組織程式碼,方便日後的維護。通過類Application組織整個GUI程式,類Application繼承了Frame及通過繼承擁有了父類別的特徵,通過建構函式_init_()初始化視窗中的物件,通過createWidgets()方法建立視窗中的物件。Frame框架是一個tkinter元件,表示一個矩形的區域。Frame一般作為容器使用,可以放置其他元件,從而實現複雜的佈局。
""" 測試一個經典的GUI程式的寫法,使用物件導向的方式 """ from tkinter import * from tkinter import messagebox class Application(Frame): """物件導向""" def _int_(self,master=None): super()._init_(master) # super()代表的是父類別的定義,而不是父類別物件 self.master = master self.pack() self.createWidget() def createWidget(self): self.btn01 = Button(self) self.btn01["text"] = "哈哈哈哈哈哈哈" self.btn01.pack() self.btn01["command"] = self.dianzan # 建立一個退出程式 self.btnQuit = Button(self,text="退出",command=root.destroy) self.btnQuit.pack() def dianzan(self): messagebox.showinfo("Message", "點個贊") print("點個贊") root = Tk() root.geometry("400x300+100+200") root.title("點贊") app = Application(master=root) root.mainloop()
到此這篇關於基於Python的GUI圖形化使用者介面程式設計的文章就介紹到這了,更多相關Python GUI圖形化使用者介面程式設計內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45