Python GUI程序類寫法與Label介紹
GUI應(yīng)用程序類的經(jīng)典寫法 — 面向?qū)ο?/p>
通過類Application組織整個GUI程序,類Application繼承了Frame以及通過繼承擁有了父類的特性,通過__init__初始化窗口中的對象,通過createWidget()
創(chuàng)建窗口中的對象
Frame框架是一個Tkiner的組件,表示一個矩形的區(qū)域,一般作為容器使用,可以放置其他組件,從而實現(xiàn)復(fù)雜的布局
經(jīng)典的GUI程序類的寫法
效果的基本示意圖
from tkinter import * from tkinter import messagebox class Application(Frame): # 繼承Frame """ 一個經(jīng)典的GUI程序類的寫法 """ def __init__(self, master=None): """ 構(gòu)造器,用來構(gòu)造組件對象 :param master: """ super().__init__(master) # super() 代表的是父類的定義,而不是父類的對象 self.master = master self.pack() self.createWidget() # 再組件中創(chuàng)建其他組件 def createWidget(self): """創(chuàng)建組件,可以構(gòu)造函數(shù)中調(diào)用""" self.btn01 = Button(self) self.btn01['text'] = '點擊送花' self.btn01.pack() self.btn01['command'] = self.songhua # 創(chuàng)建一個退出按鈕 # command綁定事件對象(相應(yīng)函數(shù)) self.btn02 = Button(self, text='退出', command=root.destroy) self.btn02.pack() # 通過布局管理器放到組件中 def songhua(self): # e就是事件對象 messagebox.showinfo("Message", "送你一朵玫瑰花") print('送你玫瑰花') if __name__ == '__main__': root = Tk() # 根窗口對象 root.geometry("400x100+300+300") root.title("一個經(jīng)典那的GUI程序的測試") # 創(chuàng)建一個Application對象 app = Application(master=root) # master=root 創(chuàng)建的對象放到root里面 root.mainloop()
實際效果圖
Label 的介紹
參數(shù)的介紹
Label(text='程序員', width=10, height=2, bg='blue',fg='white',font=("黑體",30),justify='center') """ text 文本內(nèi)容 width 寬度 一個英文占1個,一個漢字占2個 height 高度 bg 背景 fg 前景色 font=() 指定字體和大小 justify 多行文字的對齊方式 """
使用Label標(biāo)簽
添加內(nèi)容,設(shè)置高度寬度,背景顏色,前景色,修改顯示的字體和字號
self.label01 = Label(self,text='程序員',width=10,height=2,bg='black',fg='white') self.label01.pack() self.label02 = Label(self, text='程序員2', width=10, height=2, bg='blue', fg='white',font=("黑體",30),justify='center') self.label02.pack()
使用Lable標(biāo)簽顯示圖像
注意要將圖片對象聲明為全局變量
# 顯示圖像 global photo # 將phone聲明成全局變量,如果是局部變量,本方法執(zhí)行完圖像就會銷毀,窗口顯出不出來 photo = PhotoImage(file="py.png") # 圖像的路徑,有些照片的類型python可能不支持,需要額外注意 self.label03 = Label(self,image =photo,width=300,height=200) self.label03.pack()
多行文字對齊的方式選擇
self.label04 = Label(self, text="圖片\n我有一個圖片\n一個好看的圖片", borderwidth=1,relief="solid",justify='right') self.label04.pack()
全部源代碼
"""測試Label組件的基本用法,使用面向?qū)ο蟮姆绞?""" from tkinter import * class Application(Frame): def __init__(self, master=None): super().__init__(master) # super() 代表的是父類的定義,而不是父類的對象 self.master = master self.pack() self.createWidget() def createWidget(self): """創(chuàng)建組件""" self.label01 = Label(self,text='程序員',width=10,height=2,bg='black',fg='white') self.label01.pack() self.label02 = Label(self, text='程序員2', width=10, height=2, bg='blue', fg='white',font=("黑體",30),justify='center') self.label02.pack() # 顯示圖像 global photo # 將phone聲明成全局變量,如果是局部變量,本方法執(zhí)行完圖像就會銷毀,窗口顯出不出來 photo = PhotoImage(file="py.png") # 圖片支持gif對象 self.label03 = Label(self,image =photo,width=300,height=200) self.label03.pack() self.label04 = Label(self, text="圖片\n我有一個圖片\n一個好看的圖片", borderwidth=1,relief="solid",justify='right') self.label04.pack() if __name__ == '__main__': root = Tk() root.geometry("600x400+300+300") root.title("Label的測試") app = Application(master=root) root.mainloop()
到此這篇關(guān)于Python GUI程序類寫法與Label介紹的文章就介紹到這了,更多相關(guān)Python GUI程序類 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python設(shè)計tcp數(shù)據(jù)包協(xié)議類的例子
今天小編就為大家分享一篇python設(shè)計tcp數(shù)據(jù)包協(xié)議類的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07python基于tkinter圖形化編程實現(xiàn)簡易計算器功能
這篇文章主要為大家詳細介紹了python基于tkinter圖形化編程實現(xiàn)簡易計算器功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07Python socket實現(xiàn)的文件下載器功能示例
這篇文章主要介紹了Python socket實現(xiàn)的文件下載器功能,結(jié)合實例形式分析了Python使用socket模塊實現(xiàn)的文件下載器客戶端與服務(wù)器端相關(guān)操作技巧,需要的朋友可以參考下2019-11-11Python?ArcPy實現(xiàn)批量對大量遙感影像相減做差
這篇文章主要為大家介紹了如何基于Python中ArcPy模塊實現(xiàn)對大量柵格遙感影像文件批量進行相減做差,文中的示例代碼講解詳細,感興趣的可以了解一下2023-06-06利用Python操作MongoDB數(shù)據(jù)庫的詳細指南
MongoDB是由C++語言編寫的非關(guān)系型數(shù)據(jù)庫,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng),其內(nèi)容存儲形式類似JSON對象,下面這篇文章主要給大家介紹了關(guān)于利用Python操作MongoDB數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2023-02-02