成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 升級之路( Lv18 ) GUI 編程

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

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

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

常用的GUI庫

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

tkinter 模塊

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

程序開發步驟

(1)) 創建應用程序主窗口對象(也稱:根窗口)

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

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

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

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

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

btn01.pack()

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

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


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

第一個 GUI 程序

基于以上步驟, 來實現一個簡單的抽獎應用。

步驟:

  • 通過類 Tk 的無參構造函數
  • 在主窗口中,添加各種可視化組件
  • 通過幾何布局管理器,管理組件的大小和位置
  • 通過綁定事件處理程序,響應用戶操作所觸發的事件
  • 調用組件方法, 進入事件循環

實操代碼:

from tkinter import Tk, Button, messagebox

root = Tk()     # 1. 通過類 Tk 的無參構造函數

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


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


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

結果展示:

tkinter 主窗口

通過 geometry(‘wxh±x±y’)進行設置。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 組件的繼承關系圖圖下圖所示:

這些類的基本作用如下:

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

常用組件匯總列表

圖片

GUI 應用程序類的經典寫法

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

實操代碼:

"""測試一個經典的 GUI 程序的寫法,使用面向對象的方式"""
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):
        """創建組件"""
        self.btn01 = Button(self)
        self.btn01["text"] = "點擊抽獎"
        self.btn01.pack()
        self.btn01["command"] = self.lottery

        """創建一個退出按鈕"""
        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應用程序經典寫法")
    app = Application(master=root)
    root.mainloop()

結果展示

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

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

責任編輯:趙寧寧 來源: Python技術
相關推薦

2025-01-20 13:19:02

2025-02-24 10:17:48

2025-03-18 07:30:00

編程并發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模塊開發

2025-03-03 10:16:04

2022-02-24 10:05:20

Python編程語言代碼

2019-03-19 13:44:41

Python編程技巧編程語言

2019-10-24 09:29:13

編程Python程序

2012-12-28 13:35:37

網絡無線網絡

2015-07-28 17:11:00

編程技術提升

2024-06-13 10:24:28

2021-12-27 14:33:47

Python語言開發

2009-09-08 14:30:57

CCNA認證考試

2016-10-31 20:13:41

大數據數據分析

2024-03-26 15:35:51

iOS 18蘋果

2023-11-30 15:02:34

Python

2023-11-27 19:42:56

Python GUI編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费a v网站 | 欧美国产一区二区 | 精品国产乱码久久久久久闺蜜 | 99伊人| 人人人艹| 黄色片a级 | 羞羞羞视频 | 国产一区91精品张津瑜 | 精品在线观看一区二区 | 欧美成视频在线观看 | 九九亚洲 | 中文字幕一区二区三区四区五区 | 91精品国产乱码久久久久久久久 | 久久av一区 | 日韩av在线免费 | 久久久综合精品 | 99精品久久 | 一区二区在线不卡 | 欧州一区二区三区 | 久久999| 精品国产1区2区3区 在线国产视频 | 亚洲视频一区在线 | 久久精品中文 | 欧美日在线 | 羞视频在线观看 | 成人av一区二区在线观看 | 日韩欧美一区二区在线播放 | 成人av在线播放 | 亚洲精品大全 | 亚洲精品888 | 69电影网 | 欧洲在线视频 | 男人天堂手机在线视频 | 欧美一级免费看 | 日韩精品一区二区三区视频播放 | 欧美日韩高清 | 成人深夜福利 | 剑来高清在线观看 | 欧美国产亚洲一区二区 | 亚洲美女一区二区三区 | 最新av在线网址 |