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