一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 帶你詳細了解Python GUI編程框架

帶你詳細了解Python GUI編程框架

2021-12-24 00:24編程界的小胖子 Python

今天小編就為大家分享一篇python 實現GUI(圖形用戶界面)編程詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

1. gui編程類關系圖

我們來看看tkinter 的gui組件關系圖

帶你詳細了解Python GUI編程框架

重要說明:

1.上述圖表示的是相關類的繼承關系圖,從右到左子類繼承父類。

(1) 比如:組件label label繼承->widget類->繼承basewidget類->繼承misc類->繼承object父類

子類擁有父類的所有的屬性和方法

2.misc和wim

tkinter 的 gui組件有兩個父類,它們直接繼承了object類

1.misc 是所有組件的根父類

2.wim 主要提供一些與窗口管理器通信的功能函數

3.tk

1.misc 和 wim 派生出類tk。

2.代表應用程序的主窗口,一般應用程序都需要直接或者間接使用tk

3.程序中通常定義

?
1
2
3
# 定義主窗口
  root = tk()
復制代碼

4.pack類、place類、grid類是我們常用的布局管理器

1.布局管理器管理組件的大小、位置

2.可以將容器中組件實現合理的排布

5.basewidget是所有組件的父類

6.widget是所有組件的父類

widget共有四個父類:basewidget、pack、grid、place

gui所有組件都具備四個父類的所有屬性和方法

帶你詳細了解Python GUI編程框架

2. 常用組件方法

tkinter類 名稱 簡介
toplevel 頂層 容器類,可用于為其他組件提供單獨的容器,toplevel 有點類似于窗口
button 按鈕 代表按鈕組件
canvas 畫布 提供繪圖功能包括直線、矩形、橢圓、多邊形、位圖等
checkbutton 復選框 可供用戶勾選的復選框
entry 單行輸入框 用戶可輸入的內容
frame 容器 用于裝載其他gui組件
label 標簽 用于顯示不可編輯的文本或者圖標
labelframe 容器 也是容器組件,類似frame,它可以支持添加標題
listbox 列表框 列出多個選項,供用戶選擇
menu 菜單 菜單組件
menubutton 菜單按鈕 用來包含菜單的按鈕(包括下拉式、層疊式)
optionmenu 菜單按鈕 menubutton 的子類,也代表菜單按鈕,可以通過按鈕打開一個菜單
message 消息框 類似標簽,可以顯示多行文本

3.gui面向對象寫法

我們前面已經使用過tkinter 類來創建一個簡單的gui程序,步驟大致為:

1.創建根窗口

2.創建組件

3.布局排版管理

4.導入事件

.....以上都是基于過程的編程寫法

但是,我們實際工作中,開發的程序都是比較復雜的

gui編程我們也要使用面向對象方式去編程,更加合理的組織我們代碼

gui面向對象編程寫法關鍵點:

官網demo版本:

帶你詳細了解Python GUI編程框架

  • 使用application類來組織各個gui程序
  • application類繼承了frame類及所有父類特性
  • 使用構造函數__init__()初始化窗口中的對象
  • 使用createwidgets()方法創建窗口中的對象
  • 創建主窗口root
  • 運行調用application來調用gui對象
  • 循環事件管理與用戶進行交互

frame框架是tkinter組件,表示一個矩形的區域,frame一般作為容器使用,可以放置其他組件,從而實現復雜的布局

面向對象代碼邏輯拆分圖:

帶你詳細了解Python GUI編程框架

根據官網推薦的demo版本,我們來使用面向對象思想實現gui程序

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from tkinter import *
class application(frame):
    def __init__(self,master=none):
        # super()代表的是父類的定義,而不是父類對象
        super().__init__(master)
        self.master = master
        self.pack()
        self.createwidget()
    def createwidget(self):
        self.but1 = button(self)
        self.but1["text"] = "add"
        self.but1.pack()
        self.but1["command"] = self.addinfo
    def addinfo(self):
        messagebox.showinfo("提示","添加成功")
 
root = tk()
root.geometry("400x100+200+300")
root.title("myfirstapp")
app = application(master=root)
root.mainloop()

帶你詳細了解Python GUI編程框架

總結

我們學習gui編程面向對象的寫法,讓我們代碼更加的整潔,提高代碼的重復使用率。

gui 面向對象編程使用繼承frame類使用構造函數來替代反復創建組件對象,組件操作全部封裝到createwidget方法,application對象直接通過master來調用。

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

原文鏈接:https://blog.csdn.net/lh9987/article/details/119842896

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 曹逼网站 | 成人影院免费看 | 69日本xxxxxxxxx98| 四虎影视最新 | 91在线亚洲精品一区 | 性满足久久久久久久久 | 男人日女人p | 日韩视频在线免费 | 热99这里只有精品 | 亚洲国产天堂 | 国产亚洲精品视频中文字幕 | 亚洲XXX午休国产熟女屁 | 美女脱了内裤打开腿让人桶网站o | 韩国三级在线播放 | 无人区尖叫之夜美女姐姐视频 | 91精品国产在线 | 亚洲AV午夜精品麻豆AV | yy8090韩国日本三理论免费 | 欧美一区二区三区久久久 | 好大水好多好爽好硬好深视频 | 1024免费福利永久观看网站 | 成人免费毛片一区二区三区 | 天天综合色天天综合网 | 精品久久久久久久久免费影院 | 美国美女hd18 | xxxxx性bbbbb欧美| 久久视频在线视频 | 免费一级欧美片在线观看 | 国内精品99| java hd国产高清 | 99久久免费精品视频 | 不良网站在线观看 | 国产三级精品播放 | 国内精品久久久久影院网站 | 欧美日韩国产成人精品 | 92国产福利视频一区二区 | 成人在线免费播放 | 女暴露狂校园裸露小说 | 精品国产乱码久久久久久人妻 | 高清女主播一区二区三区 | 王者荣耀瑶白色液体 |