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

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

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

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

前言? ??

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

常用的GUI庫

1.Tkinter

tkinter(TK interface)是Python內(nèi)置的標(biāo)準(zhǔn)GUI庫,支持跨平臺(tái)的GUI程序開發(fā),tkinter 適合小型的GUI程序編寫,也特別適合初學(xué)者學(xué)習(xí)GUI編程。

2.wxPython

wxPython是比較流行的GUI庫,適合大型應(yīng)用程序開發(fā),功能強(qiáng)于tkinter,整體設(shè)計(jì)框架類似于MFC(Microsoft Foundation Classes 微軟基礎(chǔ)類庫)。

3.PyQT

Qt是一種開源的GUI庫,適合大型GUI程序開發(fā),PyQT是Qt工具包標(biāo)準(zhǔn)的Python實(shí)現(xiàn),我們可以使用Qt Dseginer 界面設(shè)計(jì)器快速開發(fā)GUI應(yīng)用程序。

基于tkinter模塊創(chuàng)建GUI程序步驟

1.創(chuàng)建應(yīng)用程序主窗口對象——通過類Tk的無參構(gòu)造函數(shù)

from tkinter import *
from tkinter import messagebox
 
root = Tk()

2.在主窗口中,添加各種可視化組件,比如:按鈕(Button) 文本框(Label)等。

btn01 = Button(root)
btn01["text"] = "創(chuàng)作不易,點(diǎn)個(gè)贊再走唄"

3.通過幾何布局管理器,管理組件的大小和位置

btn01.pack()

4.事件處理

通過綁定事件處理程序,響應(yīng)用戶操作所觸發(fā)的事件(比如:單擊、雙擊等)

def dianzai(e):
    messagebox.showinf("Message","點(diǎn)個(gè)贊,讓你關(guān)注我")
    print("點(diǎn)一個(gè)贊")
    
btn01.bind("<Button>",dainzan)

主窗口設(shè)置

主窗口位置和大小

通過geometry(wxh +/- x +/- y)進(jìn)行設(shè)置,w為寬度,h為高度。+x表示距屏幕左邊的距離,-x表示距屏幕右邊的距離,+y表示屏幕上邊的距離,-y表示屏幕下邊的距離。表示寬度500,高度300,距左邊100個(gè)像素,距上邊100個(gè)像素。

root.title = ("來點(diǎn)贊呀")   # 建立標(biāo)題
root.geometry("500x300+100+100")

基于上述功能,代碼實(shí)現(xiàn)如下:

from tkinter import *
from tkinter import messagebox
 
root = Tk()  # 創(chuàng)建主窗口
root.title = ("來點(diǎn)贊呀")   # 建立標(biāo)題欄
root.geometry("500x300+100+100")
btn01 = Button(root)  # 建立一個(gè)btn01對象設(shè)置,將窗口放進(jìn)去
 
btn01["text"] = "創(chuàng)作不易,點(diǎn)個(gè)贊再走唄"
btn01.pack()  # 調(diào)用布局管理器,將組件對象合理的放入窗口中
 
 
def dian_zan(e):  # e 封裝的事件對象
    messagebox.showinfo("Message", "點(diǎn)個(gè)贊")
    print("點(diǎn)個(gè)贊")
 
 
btn01.bind("<Button>", dian_zan)  # 綁定事件
 
root.mainloop()  # 調(diào)用組件的mainloop()方法,進(jìn)入事件循環(huán)

顯示如下:

GUI編程整體描述?

圖形用戶界面是由一個(gè)個(gè)組件組成的,有的組件還能在組件里邊放置其他的組件,我們成為容器,Tkinter GUI組件關(guān)系如下:

接下來,我們在代碼中查看對象的繼承關(guān)系圖,以button為例:ctrl + 鼠標(biāo)左鍵,跳入button中,然后鼠標(biāo)右鍵,查看繼承結(jié)構(gòu)圖如下:

常用組件匯總列表

TKinter類 名稱 簡介
Toplevel 頂層 容器類,可用于為其他組件提供單獨(dú)的容器;Toplevel有點(diǎn)類似于窗口
Button 按鈕 代表按鈕組件
Canvas 畫布 提供繪圖功能,包括直線、矩形、橢圓、多邊形、位圖等。
Checkbutton 復(fù)選框 可供用戶勾選的復(fù)選框
Entry 單行輸入框 用戶可輸入內(nèi)容
Frame 容器 用于加載其它GUI組件
Label 標(biāo)簽 用于顯示不可編輯的文本或圖標(biāo)
LabelFrame 容器 也是容器組件,類似于Frame,但他支持添加標(biāo)題
Listbox 列表框 列出多個(gè)選項(xiàng),供用戶選擇
Menu 菜單 菜單組件
Menubutton 菜單按鈕 用來包含菜單的按鈕(包括下拉式、層疊式等)
OptionMenu 菜單按鈕 Menubutton的子類,也代表菜單按鈕,可通過按鈕打開一個(gè)菜單
Message 菜單按鈕 類似于標(biāo)簽,但是可以顯示多行文本,后來當(dāng)Label也能顯示

GUI應(yīng)用程序類的經(jīng)典寫法

GUI應(yīng)用程序的主要結(jié)構(gòu),采用的面向?qū)ο蟮姆绞?,更加合理的組織代碼,方便日后的維護(hù)。通過類Application組織整個(gè)GUI程序,類Application繼承了Frame及通過繼承擁有了父類的特征,通過構(gòu)造函數(shù)_init_()初始化窗口中的對象,通過createWidgets()方法創(chuàng)建窗口中的對象。Frame框架是一個(gè)tkinter組件,表示一個(gè)矩形的區(qū)域。Frame一般作為容器使用,可以放置其他組件,從而實(shí)現(xiàn)復(fù)雜的布局。

"""
測試一個(gè)經(jīng)典的GUI程序的寫法,使用面向?qū)ο蟮姆绞?
"""
from tkinter import *
from tkinter import messagebox
 
class Application(Frame):
    """面向?qū)ο?""
 
    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
 
        # 創(chuàng)建一個(gè)退出程序
        self.btnQuit = Button(self,text="退出",command=root.destroy)
        self.btnQuit.pack()
 
    def dianzan(self):
        messagebox.showinfo("Message", "點(diǎn)個(gè)贊")
        print("點(diǎn)個(gè)贊")
 
root = Tk()
root.geometry("400x300+100+200")
root.title("點(diǎn)贊")
app = Application(master=root)
 
root.mainloop()

總結(jié)

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

欄目分類
最近更新