Python又把GUI界面攻下了,今天就告訴你怎麼玩

来源:https://www.cnblogs.com/moonhmily/archive/2019/03/17/10545272.html
-Advertisement-
Play Games

學Python這麼久了,一直想做個界面出來,最近發現Python有個內置庫tkinter,利用它可以很輕鬆做出一些簡易的UI界面 關註公眾號「**Python專欄**」,後臺回覆關鍵字:**zsxq03**,獲取本文全部代碼 ...


python gui

0.引言

學Python這麼久了,一直想做個界面出來,最近發現Python有個內置庫tkinter,利用它可以很輕鬆做出一些簡易的UI界面,首先來看Python官方對Tkinter的說明:

The tkinter package (“Tk interface”) is the standard Python interface to the Tk GUI toolkit. Both Tk and tkinter are available on most Unix platforms, as well as on Windows systems.

從上面描述中我們不難看出,不管你是 Mac OS 系統,還是 Windows 系統,它都可以生成相對應的操作界面,這就是所謂的跨平臺。

1.調用關係說明

其原理就是我們使用 Python代碼去調用 Tkinter, Tkinter 已經封裝了訪問TK的介面,這個介面是一個圖形庫,支持多跨平臺操作系統,進而通過它,我們就可以調用我們系統本身的GUI介面了。

Tkinter

2.環境

操作系統:Windows / Linux / Mac OS

Python版本:3.6.6

3.小試牛刀

有了概念並瞭解原理之後,接下來就小試牛刀一下~

import tkinter as tk
import tkinter.messagebox as mbox


# 定義MainUI類表示應用/視窗,繼承Frame類
class MainUI(tk.Frame):
    # Application構造函數,master為視窗的父控制項
    def __init__(self, master = None):
        # 初始化Application的Frame部分 
        tk.Frame.__init__(self, master)
        # 顯示視窗,並使用grid佈局
        self.grid()
        # 創建控制項
        self.createWidgets()


    # 創建控制項
    def createWidgets(self):
        # 創建一個標簽,輸出要顯示的內容
        self.firstLabel = tk.Label(self,text="「人人都是Pythonista」專註Python領域,做最專業的Python星球。")
        # 設定使用grid佈局
        self.firstLabel.grid()
        # 創建一個按鈕,用來觸發answer方法
        self.clickButton = tk.Button(self,text="點一下瞧瞧?",command=self.answer)
        # 設定使用grid佈局
        self.clickButton.grid()


    def answer(self):
        # 我們通過 messagebox 來顯示一個提示框
        mbox.showinfo("「人人都是Pythonista」",'''
        這是一個專註Python的星球,我們提供「從零單排」、「實戰項目」、「大航海」、「技術沙龍」、「技術分享」、「大廠內推」等系列供你選擇及學習,當然也會有周邊技術沿伸。
        本星球會不定期開展各類實戰項目,階段性組織線上技術沙龍、分享等;對於職業發展路線不明確的,我們會邀請到一些大廠hr及高級開發、經理等給大家解惑。
        加入我們,和千人一起玩Python,To be a Pythonista!
        ''')


# 創建一個MainUI對象
app = MainUI()
# 設置視窗標題
app.master.title('「人人都是Pythonista」')
# 設置窗體大小
app.master.geometry('400x100')
# 主迴圈開始
app.mainloop()

在這裡:

  1. 我們導入了 tkinter 的相關模塊
  2. 定義了初始化函數,通過 grid() 方法將我們的組件傳給父容器
  3. 自定義一個創建組件的方法,我們創建了一個標簽和一個按鈕,這個按鈕被點擊後就會觸發 answer這個方法
  4. 我們通過 messagebox 來顯示一個提示框
  5. 實例化我們的 APP,然後通過主線程來監聽我們的界面操作

運行後如下:

Tkinter

5.總結

想要做出漂亮的UI界面,還是需要深入地學習下Tkinter這個模塊。上文中的我們只用到了框架、按鈕、標簽、文本這四種控制項,而在Tkinter中給我們提供了15種控制項供大家使用。

此外Tkinter控制項佈局有三種方式:包裝pack()、網格grid()、位置place(),本文中選用了grid,大家也可以逐一嘗試下有什麼區別,期待大家的大試牛刀~

關註公眾號「Python專欄」,後臺回覆關鍵字:zsxq03,獲取本文全部代碼

Python專欄二維碼


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 勻速運動 (當需要物體做勻速運動直接調用statMove函數) 緩衝運動(越接近目標,速度越慢) 緩運運動比直線運動視覺性更好,所以很常用 1 function startMove(dom, targetPosetion) { 2 clearInterval(timer); 3 var speed ...
  • 續前文 "轉載: 中文輸進去,程式出得來,開發者發大財 LingaScript:中文化TypeScript" , 雖然其中常式使用了繁體中文語法, 但它同時也支持簡體中文語法. 註: 此文中VS Code的TypeScript環境設置為了中文, 因此錯誤信息也是中文. 方法見 "VS Code 有哪 ...
  • 一、繼承的概念 子類共用父類的數據和方法的行為,就叫繼承。 二、E55如何實現繼承?探索JavaScript繼承的本質 2.1構造函數之間的“複製粘貼” 第一條路是通過構造函數來繼承,這可以理解為子類直接複製了父類構造函數的代碼,然後按照一定的規矩“粘貼”在自己的構造函數中,為己所用。舉個例子: 如 ...
  • 電商項目(中) 如果 值不是 ,可以使用 屬性, 鐘錶: 心動: 海浪: 背景: 漸變色: 動畫背景: 透明度: 3D效果: 過渡: 溢出隱藏: 佈局: 動畫: 結言 好了,歡迎在留言區留言,與大家分享你的經驗和心得。 感謝你學習今天的內容,如果你覺得這篇文章對你有幫助的話,也歡迎把它分享給更多的朋 ...
  • 參數預設值 1.首先,來看一下es5中的函數預設值 2.es6中提供了一個新的函數預設值的方式,外界傳入的參數會依次賦值給函數中的參數 2019-03-15 23:46:25 ...
  • 處理器設計所圍繞的兩個問題: 指令集設計(軟體) 機器結構設計(硬體) 第二章為指令集設計,第三章為機器結構設計。 指令集設計所受影響: 程式語言(精度,定址模式,跳轉指令) 應用(科學計算 -> 應用) 操作系統(記憶體管理,程式的不連續性) 指令集如何設計: 早期,硬體可否實現 -> 如今, 是否 ...
  • 大二下開始意識到電腦基礎的重要性,就去圖書館隨緣找了一本機械工業出版社的大部頭書籍開始看, 也為了讓自己養成總結和記錄的習慣,把每一章的內容結構化的寫成讀書筆記。以後查閱方便。 這本書是集成的,電腦系統的方方面面都有設計,講的也都比較底層,適合學完電腦電路基礎和電腦組成原理後看。 第一章:概 ...
  • 1、基本的@property使用,可以把函數當做屬性用 2、@property的set,deleter,get 3、@property demo 4、property函數使用 5、property函數操作私有屬性的get和set方法 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...