日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python温度转换_一步一步教会你,详解用Python实现一个简易的温度换算GUI小工具...

發布時間:2024/3/7 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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小工具...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。