偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Python 升級(jí)之路( Lv18 ) GUI 編程

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

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

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

常用的GUI庫(kù)

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

tkinter 模塊

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

程序開(kāi)發(fā)步驟

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

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

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

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

btn01 = Button(root)
btn01["text"] = "點(diǎn)擊進(jìn)行抽獎(jiǎng)"

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

btn01.pack()

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

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


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

第一個(gè) GUI 程序

基于以上步驟, 來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽獎(jiǎng)應(yīng)用。

步驟:

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

實(shí)操代碼:

from tkinter import Tk, Button, messagebox

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

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


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


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

結(jié)果展示:

tkinter 主窗口

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

from tkinter import * root = Tk()

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

GUI 編程整體描述

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

這些類的基本作用如下:

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

常用組件匯總列表

圖片

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

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

實(shí)操代碼:

"""測(cè)試一個(gè)經(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 代表的是父類的定義, 而不是父類對(duì)象
        self.master = master
        self.pack()
        self.createWidget()

    def createWidget(self):
        """創(chuàng)建組件"""
        self.btn01 = Button(self)
        self.btn01["text"] = "點(diǎn)擊抽獎(jiǎng)"
        self.btn01.pack()
        self.btn01["command"] = self.lottery

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

    def lottery(self):
        messagebox.showinfo("點(diǎn)擊抽獎(jiǎng)", "恭喜您中獎(jiǎng), 獎(jiǎng)金{0}個(gè)粽子+{1}個(gè)咸鴨蛋".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é)果展示

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

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

責(zé)任編輯:趙寧寧 來(lái)源: 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模塊開(kāi)發(fā)

2025-03-03 10:16:04

2022-02-24 10:05:20

Python編程語(yǔ)言代碼

2019-03-19 13:44:41

Python編程技巧編程語(yǔ)言

2019-10-24 09:29:13

編程Python程序

2012-12-28 13:35:37

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

2015-07-28 17:11:00

編程技術(shù)提升

2024-06-13 10:24:28

2021-12-27 14:33:47

Python語(yǔ)言開(kāi)發(fā)

2009-09-08 14:30:57

CCNA認(rèn)證考試

2016-10-31 20:13:41

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

2024-03-26 15:35:51

iOS 18蘋果

2023-11-30 15:02:34

Python庫(kù)

2023-11-27 19:42:56

Python GUI編程
點(diǎn)贊
收藏

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