日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

基于Python的GUI圖形用戶界面編程詳細講解_python

作者:無限囂張(菜菜) ? 更新時間: 2023-02-04 編程語言

前言? ??

在最早程序的設計中,程序和用戶的交互都是通過控制臺來完成的,而GUI(Graphics User Interface),即圖形用戶編程,是Python 所提供的一個豐富的組件,可以快速的實現使用圖形界面和用戶交互。

常用的GUI庫

1.Tkinter

tkinter(TK interface)是Python內置的標準GUI庫,支持跨平臺的GUI程序開發,tkinter 適合小型的GUI程序編寫,也特別適合初學者學習GUI編程。

2.wxPython

wxPython是比較流行的GUI庫,適合大型應用程序開發,功能強于tkinter,整體設計框架類似于MFC(Microsoft Foundation Classes 微軟基礎類庫)。

3.PyQT

Qt是一種開源的GUI庫,適合大型GUI程序開發,PyQT是Qt工具包標準的Python實現,我們可以使用Qt Dseginer 界面設計器快速開發GUI應用程序。

基于tkinter模塊創建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()方法,進入事件循環

顯示如下:

GUI編程整體描述?

圖形用戶界面是由一個個組件組成的,有的組件還能在組件里邊放置其他的組件,我們成為容器,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應用程序類的經典寫法

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()

總結

原文鏈接:https://blog.csdn.net/zywcxz/article/details/128406919

欄目分類
最近更新