一步一步教會你,詳解用Python實現一個簡易的溫度換算GUI小工具

2020-12-04 python高手養成

今天,我們來使用Python完成一個小工具的製作。很簡單,就是對於攝氏溫度和華氏溫度的相互換算。但是,我們的目的是複習一下之前學過的Python中tkinter的小內容。

複習下前面的知識

先來看下今天要完成的內容

界面效果

最終效果展示

Pmw模塊

除了tkinter模塊外,我們今天還用了一個叫Pmw的模塊,它裡面有很多功能豐富的控制項,比如,常用的EntryField,就是類似我們今天Label+Entry控制項,但是它的功能比簡答二者組合的功能要豐富的多,EntryField控制項可以對於輸入進行限定,這樣就不需要我們編寫額外的代碼了。

省時省力

當然,我們今天不用這個控制項了(它封裝的太簡單了,就幾個參數)。我們使用它提供的另外兩個控制項,Balloon和MessageBar控制項,來感受下它們的強大之處。Balloon,顧名思義,就是熱氣球,對於電腦的話大家第一印象是不是一個類似提示框的東西。

balloon

MessageBar這個控制項也好理解,就是信息提示條,這兩個東西就是上面圖中我用紅線框住的內容。

有了信息提示用戶獲得感會更強

對於EntryField知識感興趣的小夥伴可以參見我的另外幾篇博文

使用Python製作一個GUI詞雲自動生成工具,讓你秒變數據分析大師

詳解Python文件對話框filedialog和顏色選擇colorchooser的使用

詳解GUI詞雲自動生成工具中詞雲屬性設置界面的實現(連載六)

Python自動生成詞雲工具(GUI)之數據清洗功能實現(連載五)

詳解詞雲自動生成工具的數據清洗界面製作過程(連載四)

這是個連載的內容,主要製作了一個詞雲自動生成工具,親測可用,感興趣的小夥伴可以自己敲代碼試試看,一個不錯的工具,可以擴展哦!

這幾篇連載內容裡有很多關於Pmw模塊中的控制項……

tkinter的一些技巧

對於GUI界面的製作,我們知道Python有很多庫提供了類似的功能和方法,比如wxPython、Qt、Kivy等等,而最為經典的要數我們的tkinter庫了,為什麼說它經典,因為它集成在了Python開發環境中,我們不需要額外進行安裝,而其它第三方庫都是需要安裝的。

其實說白了,tkinter庫的學習,主要是三點:

tkinter不外乎這幾個點

控制項、事件、布局

對於控制項屬性其實都是大同小異的,使用多了,自然而然就會了。最主要的還是要掌握好常用的事件處理機制和控制項的布局方式。

控制項的美觀布局使得程序更能面向用戶、易操作;而事件處理機制其實是程序的核心,它使得程序可用性更強(試想一大堆漂亮的按鈕如果不能點擊,那麼這些按鈕就還是沒有用處的)

tkinter中控制項的布局其實很簡單,單個控制項儘量將其放入到Frame、TopLevel這樣的容器控制項中,這樣對於控制項與控制項之間的留白就更好處理,通過設置容器控制項的relief屬性,還可以給控制項組添加一些邊框,使得程序更加美觀。

想要美觀,布局很重要

對於事件,無非就是滑鼠按下了,鍵盤鬆開了類似這樣的操作。記住幾個關鍵操作也就可以了。但是,這個裡面比較重要的就是類、方法、函數在一個控制項中是如何綁定的,同一個控制項如果同時綁定幾個方法的話,首先會調用哪個方法呢?(後續我們會討論)

對於鍵盤滑鼠的響應事件

布局,無非就是grid、pack、place,掌握這些就基本可以編寫一個美觀的GUI程序了

廢話不多說,我們直接看下今天的代碼

代碼實現

# coding:utf-8

import Pmw

from tkinter import *

def is_number(s):

try:

float(s)

return True

except ValueError:

pass

try:

import unicodedata

unicodedata.numeric(s)

return True

except (TypeError, ValueError):

pass

return False

def btnCalc():

if is_number(swdVar.get()) and is_number(hwdVar.get()):

print('傳入一個數值型即可,兩個都是數值沒法計算了!')

swdVar.set('')

hwdVar.set('')

elif is_number(swdVar.get()) and not is_number(hwdVar.get()):

# 攝氏溫度轉換為華氏溫度

h = 9 / 5.0 * float(swdVar.get()) + 32

hwdVar.set('{}'.format(h))

elif not is_number(swdVar.get()) and is_number(hwdVar.get()):

# 華氏溫度轉化為攝氏溫度

s = 5 / 9.0 * (float(hwdVar.get()) - 32)

swdVar.set('{}'.format(s))

else:

print("檢查填入的數值")

root = Tk()

root.title('溫度計算器')

root.geometry('400x250+100+100')

# 添加熱氣球

balloon = Pmw.Balloon(root)

# 攝氏溫度變量

swdVar = StringVar()

f1 = Frame(root, relief='groove', bd=2)

lb1 = Label(f1, text="攝氏溫度")

lb1.pack(side=LEFT, padx=5, pady=5)

swd = Entry(f1, textvariable=swdVar)

swdVar.set('輸入一個數值')

swd.pack(side=RIGHT, fill=BOTH, expand=YES, padx=5, pady=5)

f1.pack(side=TOP, fill=BOTH, expand=YES, padx=10, pady=10)

balloon.bind(swd, '攝氏溫度',

'輸入攝氏溫度,單擊計算按鈕後將轉化為華氏溫度')

# 華氏溫度變量

hwdVar = StringVar()

f2 = Frame(root, relief='groove', bd=2)

lb2 = Label(f2, text="華氏溫度")

lb2.pack(side=LEFT, padx=5, pady=5)

hwd = Entry(f2, textvariable=hwdVar)

hwd.pack(side=RIGHT, fill=BOTH, expand=YES, padx=5, pady=5)

hwdVar.set('輸入一個數值')

f2.pack(side=TOP, fill=BOTH, expand=YES, padx=10, pady=10)

balloon.bind(hwd, "華氏溫度",

"輸入華氏溫度,單擊計算按鈕後轉化為攝氏溫度")

# 下面是按鈕

f3 = Frame(root)

bcal = Button(f3, text='計算', relief='ridge', bd=2, command=btnCalc)

bcal.pack(side=LEFT, fill=BOTH, expand=YES, padx=10, pady=5)

balloon.bind(bcal, "溫度轉換",

"上面文本框中輸入任意一個單擊按鈕完成計算")

bext = Button(f3, text='退出', relief='ridge', bd=2, command=root.destroy)

bext.pack(side=RIGHT, fill=BOTH, expand=YES, padx=10, pady=5)

balloon.bind(bext, "退出程序","單擊退出程序")

f3.pack(side=TOP, fill=BOTH, expand=YES, padx=5, pady=5)

# 信息條,展示幫助信息

messageBar = Pmw.MessageBar(root,

entry_width=40,

entry_relief='groove',

labelpos='w',

label_text='提示信息:')

# 布局信息條

messageBar.pack(fill=X, expand=YES, side=BOTTOM, padx=10, pady=5)

# 綁定信息條

balloon.configure(statuscommand=messageBar.helpmessage)

root.mainloop()

暫告一段落

好了,今天的內容就到這裡了,對於Python GUI感興趣的小夥伴們可以關注我,後續會推出更多精彩內容。本人近期也在學習一些Python編程的其它內容,會逐步跟大家分享看到的知識點和實例,有意提高Python編程能力的小夥伴一定要關注我,大家一起學習進步……

轉載請註明出處,百家號:Python高手養成。

相關焦點

  • PyAutoGUI:自動化鍵鼠操作的Python類庫
    隨便挑了一張看起來比較高端的圖片有些朋友可能玩過按鍵精靈,一個用來操作鍵盤滑鼠完成一些自動化工作的軟體。其實如果你學了Python的話,完全用不著按鍵精靈這種東西了。因為廣泛的Python類庫裡,就有PyAutoGUI這樣可以變成控制鍵盤滑鼠的類庫,有了它,就可以用Python隨心所欲的操作電腦了。
  • 使用Python製作一個簡易的OCR圖片文字識別工具
    今天帶領大家使用Python製作一個簡易的OCR圖片文字識別工具,來解決這類問題。你找不到這個鍵?自行百度吧,兄嘚),會彈出一個對話框,在對話框中輸入mspaint會打開系統提供給我們的一個簡易的繪圖工具,通過這個工具可以實現對圖像的簡單處理。比如截圖,保存圖片等等操作。
  • 用Python實現簡易超市售貨系統
    今天來實現一個簡單的超市售貨系統數據存儲形式為json的數據首先是讀取數據,這裡用到的Python的json庫,用於處理json類型的數據```pythondef load(): # 數據讀取j = open('goods.txt', 'r', encoding='utf-8')# 逐行讀取文件中的數據
  • 人生苦短,我用Python,那麼問題來了,普通人要學python嗎?
    話說在金融和IT行當混跡了多年,python一直是被我隨手拿來當個小工具用用,有時候偷懶用python弄個excel自動化整理工具,有時候拿來上各種網站爬蟲搜集點信息,有時候也會拿來寫點量化小工具。那麼到底什麼是python?
  • Python入門小迷宮,走完這個迷宮,就能掌握python編程基礎
    這是一個很神奇的迷宮,走完這個迷宮就能掌握python基礎。其實,這是一個用python做的迷宮小遊戲,非常簡單,但對於python初學者來說,還是有一定的挑戰性,但TONOW有源碼和教程,只要跟著python迷宮小遊戲的教程和相應的源碼,不僅很容易就能自己開發出這個遊戲,還能在這個過程中,掌握python編程的基礎哦!
  • Python開發者必知的 11 個 Python GUI 庫,你用過幾個?
    Python開發者必知的 11 個 Python GUI 庫,你用過幾個? 當你使用python編寫應用程式時,你就一定要使用GUI。Python GUI的選擇有很多。目前來說,Python GUI程序庫有30多個跨平臺框架。現在就列出其我認為最好的11個.
  • 一個Python GUI神器,雙手徹底解放!
    與直接使用基礎框架編寫代碼相比,PySimpleGUI代碼更簡單、更短,因為PySimpleGUI實現了許多「樣板代碼」,並且接口已被極大的簡化,用最少的代碼即可實現所需功能。PySimpleGUI含有成百上千的書面文檔頁面和示例程序,這將幫助我們快速有效地工作。
  • 使用Python製作一個帶GUI界面的詞雲自動生成工具(連載四)
    話上一篇博文我們對自動生成詞雲工具的數據清hu洗界面前置知識點進行了梳理總結(本文主要帶大家實現詞雲自動生成工具的數據清洗界面。好了,我們開始吧目標我們來看一下具體的實現結果,如下圖所示。這點是必須要考慮到的,我們在界面中添加了一個自定義清洗字符的控制項(使用EntryField和Button控制項),輸入自定義去除字符,通過單擊『添加』按鈕,實現將自定義字符添加到去除列表的功能。第二部分顯示清洗內容,這一部分主要使用ScrolledText控制項顯示。
  • Python用wordcloud展示,有你名字嗎?
    可以實現!結合PyQt5的QTabWidget類用Python將電子表格Excel展示在界面中,PyQt5之QTableWidget應用一步一步教會你,基於python製作精美詞雲,帶你分析世界經典名著
  • Python學習第128課——在Python中實現醉漢隨機遊走
    【每天幾分鐘,從零入門python編程的世界!】這節我們在2D平面內實現隨機遊走。我們先把原理搞清楚,用代碼實現這個原理。原理分析:我們想像在2D平面內有一個x軸和y軸組成的坐標系,有一個人他是個醉漢,他以(0,0)為原點,隨機遊走,以x和y表示遊走後的坐標值,剛開始x=0,y=0。他每走一步之前,都需要先做一次選擇,選擇往東南西北哪一個方向去走,這個選擇我們需要先引入一個random庫,這是一個可以用來實現隨機數、隨機選擇的庫,用這個庫來實現隨機方向的選擇。
  • 染髮技術揭秘:關於高明度暖色的多段發一步統一,只要一個辦法
    有的美發同仁認為多段一步統一必須是六度目標色或者是六度一下的,偏渾濁的顏色!其實不然,只要調配得當,也可以做出高明度,高彩度的一步暖色系!概念要體現高色度的暖色,就要選擇高明度低彩度的色膏。公式基色+工具色+綜合色+雙氧按照公式和概念,還有底色的特性。我們換算出配方比例8/0+0/33+8/11+0/00+0/43+12%50+40+10+50+5+12%8/0基色,換算後是50克。0/33工具色,換算後是40克。8/11綜合色,換算後是10克。
  • 從零開始寫Python爬蟲,四大工具你值得擁有!
    如果你正在學習編程,那麼「爬蟲」絕對是你不可忽視的。那麼,學習python爬蟲之前需要哪些準備?一顆熱愛學習,不屈不撓的心一臺有鍵盤的電腦(什麼系統都行。我用的os x,所以例子會以這個為準)html相關的一些知識。
  • 學會用Python結合人工智慧嘗試預測股票,下一個股神就是你!
    股票市場漲漲跌跌,好像毫無規律,但有一些人卻憑藉自己的直覺掌握了一些特殊規律,從而實現在股票上的實現斬獲。現在在人工智慧時代,Python+AI框架,無疑會利用人工智慧優勢可以對股票市場進行特徵學習,抓取比憑藉個人感覺更多的股票數字特徵。本文要介紹的就是利用Python+keras對股票進行時間序列上的數字特徵預測。
  • 染髮基礎公式,演變出多段一步統一的技術配方
    只要記住體系概念中的換算方法,就可以做出想要的多段一步統一!介紹一下這個的染髮技術概念整個技術概念只有一個公式,那就是基色+工具色+綜合色+雙氧概念,基色可以統一色度,平衡色度!工具色可以給與,統一色調!控制顏色走向!綜合色融合,平衡基色與工具色。使底色更統一!
  • 靈活運用python實現英制單位英寸與公制單位釐米互換
    python能實現的東西有很多,其中就有運用python來實現英制單位英寸與公制單位釐米互換,那麼具體應用怎麼換算呢?下面羽憶教程網為你提供運用python實現英制單位英寸與公制單位釐米互換的教程。已知1英寸等於2.54釐米,所以下面開始用python來完成運算。以下是python的源碼:#!
  • 初學者如何用「python爬蟲」技術抓取網頁數據?
    在當今社會,網際網路上充斥著許多有用的數據。我們只需要耐心觀察並添加一些技術手段即可獲得大量有價值的數據。而這裡的「技術手段」就是指網絡爬蟲。 今天,小編將與您分享一個爬蟲的基本知識和入門教程:什麼是爬蟲?
  • 用PS 做出基因突變位點示意圖,每一步的細節都在這裡了!
    科研論文要個示意圖,不會用 PS?沒關係,下面的小白級教程手把手教會你。   今天給大家帶來的就是如何用 PS 做出一張簡易的基因突變定位示意圖,順便講解 PS 幾種基本工具的使用。   先看樣片。
  • 三大Python GUI開源框架,誰才是你的最愛?
    因為程式設計師有很多的選擇,真正困難的是如何為用戶創建一個簡單的方式來與程序互動。  在各種各樣的平臺上都有相應的UI框架,它們可能分別可以在Windows,Mac和Linux平臺上運行,也可能可以同時在這三個平臺上運行。  「你的應用程式是否有一個傳統的圖形用戶界面?」
  • 一步一步帶你理解 Python 中的淺複製與深複製
    但是,對於可修改的對象,你偶爾可能需要對該對象做一個真正的複製。何為真正的複製?就是修改拷貝來的對象不會影響原來的對象。Python 中內置的可修改的集合類對象,比如列表、字典、集合等,可以直接使用對應的工廠方法進行拷貝。需要注意的是,對於複合類型的對象,比如列表、字典、集合等,複製有淺複製與深複製兩種類型。
  • 令人讚嘆的8個Python新手工具!
    它還有十分活躍的用戶社區,基本上的功能都有非常詳細的文檔讓你查閱。讀一讀scikit-learn的用戶指南及文檔,你也會對算法的使用有更全面的了解。3、TheanoTheano是一個較老牌和穩定的機器學習python庫之一,雖然目前使用的人數有所下降。但它畢竟是一個祖師級的存在,一定有它的優點所在。