網站首頁 編程語言 正文
前言? ??
在最早程序的設計中,程序和用戶的交互都是通過控制臺來完成的,而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
相關推薦
- 2024-04-06 npm install安裝插件很慢,解決方法
- 2022-04-19 一起來了解c語言的str函數_C 語言
- 2022-03-25 C語言設計模式之命令模式介紹_C 語言
- 2023-05-06 pandas中groupby操作實現_python
- 2022-08-03 如何一鍵理清大型Python項目依賴樹_python
- 2022-11-02 React組件實例三大屬性state?props?refs使用詳解_React
- 2022-10-02 基于useImperativeHandle的使用解析_React
- 2022-04-01 SQL?Server的存儲過程詳解_MsSql
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支