自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python 升級之路( Lv18 ) GUI 編程

開發(fā)
今天我們將初步學(xué)習(xí) GUI 圖形界面編程 tkinter,了解常用組件并編寫簡單程序。

棲息于阿拉德大陸上空的海洋——天空之海的巨大生物。據(jù)說它的體積甚至超過周邊的大陸,每次它飛行的時候,就像看到一塊巨大的陸地在移動。有傳聞?wù)f,天帷巨獸每300年會穿過天空之海降落到大陸上休息。??

在天帷巨獸的背部形成的島嶼上,殘留著大量不知年代的文明遺跡。探索家萊斯利?貝伊蘭斯發(fā)現(xiàn)之后,被深深的吸引。從那以后,他開始乘坐天帷巨獸到處周游世界,并且還在巨獸的背上創(chuàng)建了GBK教。

常用的GUI庫

  • Tkinter tkinter(Tk interface) 是 Python 的標準 GUI 庫,支持跨平臺的 GUI 程序開發(fā). tkinter 適合小型的 GUI 程序編寫,也特別適合初學(xué)者學(xué)習(xí) GUI 編程. 本章以 tkinter 為核心來進行學(xué)習(xí)
  • wxPythonwxPython 是比較流行的 GUI 庫,適合大型應(yīng)用程序開發(fā),功能強于 tkinter,整體設(shè)計 框架類似于 MFC(Microsoft Foundation Classes 微軟基礎(chǔ)類庫)
  • PyQT Qt 是一種開源的 GUI 庫,適合大型 GUI 程序開發(fā),PyQT 是 Qt 工具包標準的 Python 實現(xiàn).  我們也可以使用 Qt Desginer 界面設(shè)計器快速開發(fā) GUI 應(yīng)用程序

tkinter 模塊

本章中,涉及大量的 API 講解。學(xué)習(xí) API 最好的來源就是官方提供的文檔:tkinter 官網(wǎng) 傳送門tkinter 中文文檔  傳送門tkinter 菜鳥教程 傳送門

程序開發(fā)步驟

(1)) 創(chuàng)建應(yīng)用程序主窗口對象(也稱:根窗口)

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

ps: 我們可以通過 from tkinter import * 來手動導(dǎo)入所有 tkinter 所有包, 也可以先不導(dǎo)包, 然后在提示需要導(dǎo)包導(dǎo)包時 Alt+ 回車 后選擇第一條提示自動導(dǎo)包即可。

(2) 在主窗口中,添加各種可視化組件

btn01 = Button(root)
btn01["text"] = "點擊進行抽獎"

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

btn01.pack()

(4) 事件處理(通過綁定事件處理程序,響應(yīng)用戶操作所觸發(fā)的事件)

def lottery(e):     # 4.1 通過綁定事件處理程序,響應(yīng)用戶操作所觸發(fā)的事件(比如:單擊、雙擊等)
    messagebox.showinfo("Message", "恭喜您中獎了, 獎勵您500萬")
    print("有用戶中獎, 獎金500萬")


btn01.bind("<Button-1>", lottery)

第一個 GUI 程序

基于以上步驟, 來實現(xiàn)一個簡單的抽獎應(yīng)用。

步驟:

  • 通過類 Tk 的無參構(gòu)造函數(shù)
  • 在主窗口中,添加各種可視化組件
  • 通過幾何布局管理器,管理組件的大小和位置
  • 通過綁定事件處理程序,響應(yīng)用戶操作所觸發(fā)的事件
  • 調(diào)用組件方法, 進入事件循環(huán)

實操代碼:

from tkinter import Tk, Button, messagebox

root = Tk()     # 1. 通過類 Tk 的無參構(gòu)造函數(shù)

btn01 = Button(root)    # 2. 在主窗口中,添加各種可視化組件,比如:按鈕(Button)、文本框(Label)等
btn01["text"] = "點擊進行抽獎"
btn01.pack()        # 3. 通過幾何布局管理器,管理組件的大小和位置


def lottery(e):     # 4.1 通過綁定事件處理程序,響應(yīng)用戶操作所觸發(fā)的事件(比如:單擊、雙擊等)
    messagebox.showinfo("Message", "恭喜您中獎了, 獎勵您500萬")
    print("有用戶中獎, 獎金500萬")


btn01.bind("<Button-1>", lottery)
root.mainloop()     # 4.2 調(diào)用組件方法, 進入事件循環(huán)

結(jié)果展示:

tkinter 主窗口

通過 geometry(‘wxh±x±y’)進行設(shè)置。w 為寬度,h 為高度+x 表示距屏幕左邊的距離;-x 表示距屏幕右邊的距離;+y 表示距屏幕上邊的距離;-y 表示距屏幕下邊的距離。

from tkinter import * root = Tk()

root.title("測試主窗口的位置和大小")
root.geometry("500x400+100+200") # 寬度 500,高度 400;距屏幕左邊 100,距屏幕上邊 200
root.mainloop()

GUI 編程整體描述

tkinter 中 GUI 組件的繼承關(guān)系圖圖下圖所示:

這些類的基本作用如下:

  • Misc 和 Wm:Tkinter 的 GUI 組件有兩個根父類,它們都直接繼承了 object 類:Misc:它是所有組件的根父類:   Wm:它主要提供了一些與窗口管理器通信的功能函數(shù)
  • TkMisc 和 Wm 派生出子類 Tk,它代表應(yīng)用程序的主窗口. 一般應(yīng)用程序都需要直接或間接 使用 Tk
  • Pack、Place、GridPack、Place、Grid 是布局管理器.  布局管理器管理組件的大小、位置通過布局管理器可以將容器中的組件實現(xiàn)合理的排布
  • BaseWidgetBaseWidget 是所有組件的父類
  • WidgetWidget 是所有組件類的父類. Widget 一共有四個父類:BaseWidget、Pack、Grid、Place. 這意味著,所有 GUI 組件同時具備這四個父類的屬性和方法

常用組件匯總列表

圖片

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

通過類 Application 組織整個 GUI 程序,類 Application 繼承了 Frame 及通過繼承擁有 了父類的特性. 通過構(gòu)造函數(shù)__init__()初始化窗口中的對象,通過 createWidgets()方法創(chuàng)建窗口中的對象.Frame 框架是一個 tkinter 組件,表示一個矩形的區(qū)域. Frame 一般作為容器使用,可以放置其他組件,從而實現(xiàn)復(fù)雜的布局。

實操代碼:

"""測試一個經(jīng)典的 GUI 程序的寫法,使用面向?qū)ο蟮姆绞?""
import random
from tkinter import *
from tkinter import messagebox


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.btn01 = Button(self)
        self.btn01["text"] = "點擊抽獎"
        self.btn01.pack()
        self.btn01["command"] = self.lottery

        """創(chuàng)建一個退出按鈕"""
        self.btnexit = Button(self, text="退出", command=root.destroy)
        self.btnexit.pack()

    def lottery(self):
        messagebox.showinfo("點擊抽獎", "恭喜您中獎, 獎金{0}個粽子+{1}個咸鴨蛋".format(random.randint(1, 100), random.randint(1, 100)))


if __name__ == "__main__":
    root = Tk()
    root.geometry("400x100+810+330")
    root.title("GUI應(yīng)用程序經(jīng)典寫法")
    app = Application(master=root)
    root.mainloop()

結(jié)果展示

在格蘭之森時, 冒險家了不起遭遇到了燃燒的森林(烈焰格拉卡)和變成僵尸的精靈(暗黑雷鳴廢墟)等異變. 在前往天 空之城攻略怪物時, 遇到了GSC , 在機緣巧合下幫助莉莉安和卡卡坤互相了解對方的心意, 在平時在冒險家酒館時還結(jié)實了老板索菲亞. 擊敗領(lǐng)主塞格哈特之后,在賽格哈特駐地的正上方,天帷巨獸正好飛過,而乘坐飛艇成功逃生的紅發(fā)少女卻因為飛艇被破壞,被迫迫降在天空之城,受傷昏迷,隨后被冒險家了不起帶回赫頓瑪爾的醫(yī)療所負責(zé)救治。??

在蘇醒后, 紅發(fā)少女介紹其自己的來歷: 她叫奧菲利亞, 是GBK教的一名成員. 由于所屬組織的很多人疑似收到了控制, 導(dǎo)致性情大變. 開始殘害同胞. 在知道了不起身份之后, 也請求了不起前去幫忙調(diào)查下情況. 于是在修理匠森納斯的幫助下, 修復(fù)飛艇之后的了不起便和奧菲利亞以及鬼劍士GSC一起去調(diào)查事件的起因了...

責(zé)任編輯:趙寧寧 來源: Python技術(shù)
相關(guān)推薦

2025-01-20 13:19:02

2025-02-24 10:17:48

2025-03-18 07:30:00

編程并發(fā)Python

2025-02-18 08:30:00

GUIPythontkinter

2024-12-23 14:54:47

2025-03-24 10:06:35

2025-03-04 07:40:00

Python模塊開發(fā)

2025-03-03 10:16:04

2019-03-19 13:44:41

Python編程技巧編程語言

2022-02-24 10:05:20

Python編程語言代碼

2019-10-24 09:29:13

編程Python程序

2015-07-28 17:11:00

編程技術(shù)提升

2012-12-28 13:35:37

網(wǎng)絡(luò)無線網(wǎng)絡(luò)

2021-12-27 14:33:47

Python語言開發(fā)

2024-06-13 10:24:28

2023-11-30 15:02:34

Python

2023-11-27 19:42:56

Python GUI編程

2009-09-08 14:30:57

CCNA認證考試

2016-10-31 20:13:41

大數(shù)據(jù)數(shù)據(jù)分析

2024-03-26 15:35:51

iOS 18蘋果
點贊
收藏

51CTO技術(shù)棧公眾號