用 Python 打造屬於自己的GUI圖形化界面

2021-02-13 Python中文社區

本期案例是帶著大家製作一個屬於自己的GUI圖形化界面—>用於設計籤名的哦(效果如下圖),是不是感覺很好玩,是不是很想學習呢?限於篇幅,今天我們首先詳細講述一下Thinter的使用方法。本來不準備詳細講述這個基礎知識,但是我怕那些想學習的同學,學起來不過癮,還是補充了這一章。

thinter的簡單應用

Thinter是python的標準GUI庫。python使用Tkinter可以快速地創建GUI應用程式。當然常用的GUI庫還有PyQt5,我們只需要知道這兩個常用的即可,如果你真的想學習的話。由於Thinter屬於python標準庫,就不需要使用pip安裝,直接導入使用即可。

① 顯示窗口窗口默認會顯示在電腦屏幕的左上角,非常小(後面需要改進);
from tkinter import *
from tkinter import messagebox

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 顯示窗口
root.mainloop()
"""
注意到:該窗口默認的顯示位置在哪裡,觀察我下面的截圖。
窗口默認顯示在整個電腦屏幕的左上角,並且窗口大小特別小。
"""

結果如下:

注意:上面2行代碼,首先實例化一個窗口對象,然後我們展示了這個窗口,讓其真正顯示出來。接下來我們的操作,就是針對這個窗口的一系列優化操作,請注意:這個優化操作使用的代碼,都是放在這2句代碼中間。

② 設置窗口大小root.geometry("600x400")調整窗口的大小;該方法中傳入的是"寬x高",但是需要注意這個乘號是小寫的英文字母x,而不是這個*表示的乘號;
from tkinter import *
from tkinter import messagebox

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 窗口大小
root.geometry("600x450")

# 顯示窗口
root.mainloop()

結果如下:

③ 調整窗口位置(使用的是同一個方法)root.geometry("600x400+374+182")調整窗口的大小+位置;374,182表示的是窗口頂點,距離電腦左上角的坐標。這個數字怎麼得到的呢?直接藉助微信截圖就可以顯示了。

操作代碼如下:

from tkinter import *
from tkinter import messagebox

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 窗口大小
root.geometry("600x450+374+182")


# 顯示窗口
root.mainloop()

結果如下:

④ 設置窗口的標題
from tkinter import *
from tkinter import messagebox

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 窗口大小
root.geometry("600x450+374+182")

#  窗口標題
root.title("我的個性籤名設計")

# 顯示窗口
root.mainloop()

結果如下:

⑤ 添加標籤控制項,並定位Label(root,text="籤名")添加標籤控制項第一個參數傳入的就是實例化的那個root窗口對象;第二個參數傳入的要顯示的那個標籤文本;僅僅添加標籤控制項後,還不行,必須要指定一個位置後,該標籤控制項才會真正展示出來,即最後需要調用grid()方法後,才會顯示標籤控制項;
from tkinter import *
from tkinter import messagebox

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 窗口大小
root.geometry("600x450+374+182")

#  窗口標題
root.title("我的個性籤名設計")

# 添加標籤控制項
label = Label(root)
# 定位
label.grid()

# 顯示窗口
root.mainloop()

結果如下:

當然你也可以想到,這個方法肯定還可以修改字體樣式、字體大小、字體顏色呀?具體怎麼操作呢?我們接著往下面看。

from tkinter import *
from tkinter import messagebox

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 窗口大小
root.geometry("600x450+374+182")

#  窗口標題
root.title("我的個性籤名設計")

# 添加標籤控制項
label = Label(root,text="籤名",font=("宋體",25),fg="red")
"""
text參數用於指定顯示的文本;
font參數用於指定字體大小和字體樣式;
fg參數用於指定字體顏色;
"""
# 定位
label.grid()

# 顯示窗口
root.mainloop()

結果如下:

⑥ 添加輸入框,並定位Entry(root,font=("宋體",25),fg="red")添加輸入框第一個參數傳入的就是實例化的那個root窗口對象;第二個參數可寫可不寫,指的是我們輸入的字體的字體樣式和字體大小;第三個參數同樣可寫可不寫,表示的是我們輸入的字體的顏色。同樣,僅僅使用上述代碼並不會顯示輸入框,只有調用grid()方法,定位後,才會真正顯示這個輸入框;
from tkinter import *
from tkinter import messagebox

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 窗口大小
root.geometry("600x450+374+182")

#  窗口標題
root.title("我的個性籤名設計")

# 添加標籤控制項
label = Label(root,text="籤名",font=("宋體",25),fg="red")
# 定位
label.grid()

# 添加輸入框
entry = Entry(root,font=("宋體",25),fg="red")
entry.grid()

# 顯示窗口
root.mainloop()

結果如下:

注意:很明顯這樣的擺放方式,並不是我們想要的。我們需要調整一下,下面我們專門花一個小節時間,去講述怎麼調整這個擺放位置。

⑦ 調整控制項的擺放位置

首先我們需要搞明白,顯示窗口究竟採用的是什麼樣子的布局方式呢?其實是網格式的布局方式。那麼什麼又是網格式的布局方式呢?excel表格你知道吧,一個個的格子就是網格式的布局方式。

好了!知道了上述原理後,我們現在來真正的調整這個控制項擺放位置啦。

from tkinter import *
from tkinter import messagebox

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 窗口大小
root.geometry("600x450+374+182")

#  窗口標題
root.title("我的個性籤名設計")

# 添加標籤控制項
label = Label(root,text="籤名:",font=("宋體",25),fg="red")
# 定位
label.grid()
"""
label.grid()等價於label.grid(row=0,column=0)
"""
# 添加輸入框
entry = Entry(root,font=("宋體",25),fg="red")
entry.grid(row=0,column=1)
"""
row=0,column=1表示我們將輸入框控制項,放在第1行第2列的位置;
python語言中,這個下標是從0開始的。
"""
# 顯示窗口
root.mainloop()

結果如下:

⑧ 添加點擊按鈕Button(root,text="籤名設計",font=("宋體",25),fg="red")添加輸入框第一個參數傳入的就是實例化的那個root窗口對象;第二個參數展示的是我們這個點擊按鈕的標籤;第三個參數可寫可不寫,指的是點擊按鈕字體的字體樣式和字體大小;第四個參數同樣可寫可不寫,表示的是點擊按鈕字體的顏色。同樣,僅僅使用上述代碼並不會顯示輸入框,只有調用grid()方法,定位後,才會真正顯示這個點擊按鈕;
from tkinter import *
from tkinter import messagebox

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 窗口大小
root.geometry("600x450+374+182")

#  窗口標題
root.title("我的個性籤名設計")

# 添加標籤控制項
label = Label(root,text="籤名:",font=("宋體",25),fg="red")
# 定位
label.grid()

# 添加輸入框
entry = Entry(root,font=("宋體",25),fg="red")
entry.grid(row=0,column=1)

# 添加點擊按鈕
button = Button(root,text="籤名設計",font=("宋體",25),fg="blue")
button.grid(row=1,column=1)

# 顯示窗口
root.mainloop()

結果如下:

至此界面已經簡單搭建起來了,接下來要做的就是輸入一個名字,點擊籤名設計後,會顯示我的這個籤名,此時就需要藉助爬蟲啦!明天我們將會發布該文的下篇哦,敬請期待。

⑨ 點擊按鈕自定義功能

這裡最後補充這個知識點,我們點擊按鈕後,總是希望能夠給我們返回點什麼,所以呢,需要我們自定義函數。

from tkinter import *
from tkinter import messagebox

def func():
    print("我是黃同學")

# 創建窗口:實例化一個窗口對象。
root = Tk()

# 窗口大小
root.geometry("600x450+374+182")

#  窗口標題
root.title("我的個性籤名設計")

# 添加標籤控制項
label = Label(root,text="籤名:",font=("宋體",25),fg="red")
# 定位
label.grid()

# 添加輸入框
entry = Entry(root,font=("宋體",25),fg="red")
entry.grid(row=0,column=1)

# 添加點擊按鈕
button = Button(root,text="籤名設計",font=("宋體",25),fg="blue",command=func)
button.grid(row=1,column=1)
"""
command=func表示調用最開始定義的func函數。
func函數一定要在這句代碼之前,因為這裡需要調用這個func函數。
"""
# 顯示窗口
root.mainloop()

結果如下:

點擊下方閱讀原文加入社區會員


相關焦點

  • Python 的圖形界面(GUI)編程?
    公眾號暱稱:一個程式設計師的日常 ,公眾號ID:smcode2016公眾號文章保持幾乎與專欄的同步,這樣方便一些平常不怎麼刷知乎的朋友使用,同時公眾號將持續更新一些免費的教程資料給大家今天的想寫的文章來源一個題目:Python 的跨平臺圖形界面編程選用哪個庫為好?
  • python教程之十GUI界面
    前言python提供了幾個開發GUI界面的庫, wsPython是python一款優秀的GUI圖形庫,要安裝wsPython庫後才可以使用。Jython庫是Python語言在Java中的完全實現,要安裝jython庫後才可以使用。
  • PyAutoGUI:自動化鍵鼠操作的Python類庫
    因為廣泛的Python類庫裡,就有PyAutoGUI這樣可以變成控制鍵盤滑鼠的類庫,有了它,就可以用Python隨心所欲的操作電腦了。而且這個類庫是跨平臺的,Windows、Linux、macOS都可以用,是不是很吸引人呢?Github頁面安裝和使用安裝PyAutoGUI非常簡單,從pip安裝即可。
  • python gui 中三大框架tkinter,wxpython, pyqt如何選擇
    python開發圖形界面也有這樣的煩惱,有很多gui框架提供我們選擇,讓我們眼花繚亂,我們很難從中選擇一個。下面我簡單介紹下主流的三個python gui框架。如果你要推銷自己的軟體,那麼你需要確保你有正確理解QT許可證或準備支付一筆不小的費用。QT給我們帶來最方便的好處,就是它有一個QT Desiginer,這個設計器可以方便我們進行頁面的布局,可以說在Tkinter裡面需要一坨坨的代碼完成的頁面布局,在QT裡面只要拖一拖控制項就搞定了。
  • APP界面信息的圖形化!
    手機APP界面的信息圖形設計將複雜、抽象、難理解的信息內容轉化為直觀的圖形,有利於受眾的認識、理解,這其中就利用了形象思維認識事物的原理。而邏輯思維依據對收集到的信息內容進行整合分析,經過充分理解加以恰當的表達再傳播出去,這就是利用理性的思考方式進行手機APP信息圖形的製作、傳播。
  • 設計了一個簡易的Python GUI界面
    我們都知道GUI界面設計不是python的強項,但作為萬金油程式語言,python也並不是不支持GUI開發。
  • Arduino圖形化編程軟體大推薦
    顧名思義,圖形化編程的最大特點就是程序邏輯最大化地用圖形化的模塊來呈現。例如MIT出品的Scratch,它被看作是用於青少年編程教學的一個標誌性案例:目的是為了幫助沒有接觸過代碼編程的人,不管是小朋友大朋友,只要希望把玩硬體,想把自己的想法變成現實,就可以用Arduino和Ardublock來實現。可以說ArduBlock是國內第一個Arduino圖形化編程工具,很可惜是ArduBlock已停止更新很久了,而且界面也略顯粗糙。網站:http://blog.ardublock.com/zh2.
  • win10子系統kali-linux安裝圖形化界面總結
    由於網上一些安裝圖形化界面的教程因為時間太久等原因有些不能用了。所以整理了這份文檔,供後來人避坑。換中科大Kali源感謝科大LUG先備份原文件創建新的/etc/apt/sources.list輸入以下內容保存並退出再簡單地update一下安裝圖形化界面
  • python辦公自動化:PyAutoGUI入門秘笈一
    學好PyAutoGUI,讓機器幫你幹活就能實現這麼舒爽的目標有同學看了以前對python辦公自動化:讓PyAutoGUI來幫你幹活,很感興趣,開始動手實踐。但是遇到很多問題,怎麼能讓大家能更快的入門PyAutoGUI呢,特地準備了以下系列,從入門到使用技巧,對PyAutoGUI做了全方位的解讀。
  • 圖形化+Python雙語解析《消滅氣球》
    圖形化編程中有非常多好玩有趣的小作品,《消滅氣球》就是其中的一款,果凍老師在課堂上作為案例給同學講過。但是在Python課堂中就缺少像這樣有意思的小作品,於是我將它用Python語句重新演繹一遍,通過同一個作品,我們可以對比學習,同時加深圖形化語言與代碼式語言的理解。同學們,大家好!跟著果凍老師學習了這麼長的時間,相信你使用圖形化編程已經非常厲害了。
  • 資源推薦 五個常用MySQL圖形化管理工具
    ,這裡我介紹五個我經常使用的MySQL圖形化管理工具,供大家參考。1、phpMyAdmin(https://www.phpmyadmin.net/)  phpMyAdmin是最常用的MySQL維護工具,是一個用PHP開發的基於Web方式架構在網站主機上的MySQL管理工具,支持中文,管理資料庫非常方便。
  • python高級進階 002第一個pyqt5程序
    瀏覽器版本過低,暫不支持視頻播放以下開始文字講解:在上一節的教程中,我們已經將圖形化界面開發的基本環境已經搭建完畢以下 ,我們對生成代碼知識點簡要解析:界面的生成基於PyQt5庫庫來自於pip管道下載命令,舉例pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simplesys模塊負責系統文件等操作模塊QtWidgets是所有qt控制項中的基類。QApplication簡單理解成程序的進程,代碼實例化為app這個對象。
  • Python和Qt開發簡單的GUI應用(電子書及視頻教程)
    課程優惠連結:https://www.udemy.com/create-simple-gui-applications-with-python-and-qt/?couponCode=BLOG9電子書在線免費閱讀:https://leanpub.com/create-simple-gui-applications/read#leanpub-auto-qt-and-pyqt 配套視頻教程也可以通過編程派的微信號獲取,只需回復關鍵詞「pyvideo02」即可獲得百度網盤分享連結及提取碼。
  • 【編程】第一期:Python Tkinter圖形化教學-基本窗口
    開始的話python屬實是一個很好的語言,功能很全,上手簡單,下面來看看python
  • Git圖形界面的使用
    還有請注意,沒有什麼事情是圖形界面客戶端可以做而命令行客戶端不能做的;命令行始終是你可以完全操控倉庫並發揮出全部力量的地方。gitk 和 git-gui    在安裝 Git 的同時,你也裝好了它提供的可視化工具,gitk 和 git-gui。
  • 三大Python GUI開源框架,誰才是你的最愛?
    對於某些應用程式來說,這個答案是肯定的,如果這個應用程式本質上是圖形化的,且在本地機器上做了優化或者是在本地運行,那麼就要考慮構建一個桌面圖形用戶界面。如果是更為通用的程序,那麼最好添加命令行或者Web界面。  命令行擁有很多優勢,例如速度、遠程訪問、可重用性,可腳本化和控制等等。這對用戶來說往往會比圖形用戶界面更為重要。
  • 詳解Git圖形界面的使用
    還有請注意,沒有什麼事情是圖形界面客戶端可以做而命令行客戶端不能做的;命令行始終是你可以完全操控倉庫並發揮出全部力量的地方。 gitk 和 git-gui 在安裝 Git 的同時,你也裝好了它提供的可視化工具,gitk 和 git-gui。
  • Adobe宣布圖形化界面設計工具XD CC免費計劃
    Adobe宣布圖形化界面設計工具XD CC免費計劃2018-05-16 10:56出處/作者:cnBeta.COM整合編輯:Alan責任編輯:leijunhua Adobe近日宣布宣布圖形化界面UX設計工具XD CC免費計劃(Starter Plan),向所有Adboe CC用戶(Mac/Linux/PC/iOS/安卓)免費提供XD CC工具使用權,並且免費開放Typekit字體工具和Creative Cloud庫訪問權
  • 介紹一款好用的java反編譯工具 - jd-gui
    /其中 jd-gui是 jd project 名下的產品,jd project名下包括了3款具體產品,如下圖所示:除此之外,IntelliJ IDEA 也有自己的反編譯插件 java bytecode decompiler,如下如所示:
  • 零基礎學習python GUI編程(PyQt)系列之一:開發軟體安裝
    在使用python進行界面編程時,很多開發者都是用了PyQt這個框架進行,PyQt是一個跨平臺的框架。它是用C ++編寫的。這是一個非常全面的庫。它包含許多工具和API。它被廣泛應用於許多行業。它涵蓋了很多平臺。PyQt是Qt庫的Python版本。