python温度转换_一步一步教会你,详解用Python实现一个简易的温度换算GUI小工具...
今天,我們來使用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高手養成。
總結
以上是生活随笔為你收集整理的python温度转换_一步一步教会你,详解用Python实现一个简易的温度换算GUI小工具...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 卷积神经网络理解
- 下一篇: Kubernetes学习笔记(二):Po