python Tkinter實(shí)時(shí)顯示數(shù)據(jù)功能實(shí)現(xiàn)
tkinter
tkinter 是 Python 的標(biāo)準(zhǔn) GUI 庫(kù)。Python 使用 tkinter 可以快速的創(chuàng)建 GUI 應(yīng)用程序。由于 tkinter 是內(nèi)置到 python 的安裝包中、只要安裝好 Python 之后就能 import tkinter 庫(kù)、而且 IDLE 也是用 tkinter 編寫而成、對(duì)于簡(jiǎn)單的圖形界面 tkinter 還是能應(yīng)付自如。
python Tkinter實(shí)時(shí)顯示數(shù)據(jù)
前言
使用Tkinter庫(kù)編寫數(shù)據(jù)展示界面。創(chuàng)建一個(gè)窗口,實(shí)時(shí)顯示溫度、濕度和當(dāng)前時(shí)間的標(biāo)簽,并通過(guò)多線程從傳感器獲取模擬溫濕度數(shù)據(jù)并更新界面具體功能如下:
- 使用tkinter庫(kù)創(chuàng)建窗口和標(biāo)簽。
- 使用threading庫(kù)創(chuàng)建兩個(gè)線程,一個(gè)用于獲取溫濕度數(shù)據(jù),另一個(gè)用于獲取當(dāng)前時(shí)間。
- get_temperature_and_humidity方法是在一個(gè)無(wú)限循環(huán)中隨機(jī)生成模擬溫濕度數(shù)據(jù),并將其更新到對(duì)應(yīng)的標(biāo)簽上。每次更新后,通過(guò)調(diào)用self.root.update()刷新窗口,使界面能夠?qū)崟r(shí)展示最新的溫濕度數(shù)據(jù)。
- get_time方法用于獲取當(dāng)前時(shí)間,并將其更新到對(duì)應(yīng)的標(biāo)簽上。使用self.get_real_time.set(time.strftime(“%H:%M:%S”))設(shè)置當(dāng)前時(shí)間,并通過(guò)遞歸調(diào)用self.root.after(1000, self.get_time)每隔1秒更新一次時(shí)間標(biāo)簽。
- 在if name == ‘main’:下創(chuàng)建Data_Display對(duì)象并運(yùn)行主事件循環(huán)run.root.mainloop(),使窗口一直運(yùn)行直到被關(guān)閉。
數(shù)據(jù)獲取
import tkinter as tk import tkinter.font as font import threading import random import time class Data_Display: def __init__(self): self.root = tk.Tk() self.root.title('數(shù)據(jù)展示') self.root.geometry("260x100+1100+150") self.font = font.Font(size=15) self.interface() def interface(self): """"溫度、濕度、時(shí)間標(biāo)簽""" temperature_label = tk.Label(self.root, text="溫度:", font=self.font) temperature_label.grid(row=0, column=0) self.get_temperature = tk.StringVar() temperature_label_a = tk.Label(self.root, textvariable=self.get_temperature, font=self.font) temperature_label_a.grid(row=0, column=1) temperature_label_b = tk.Label(self.root, text="℃", font=self.font) temperature_label_b.grid(row=0, column=2, padx=5) humidity_label = tk.Label(self.root, text="濕度:", font=self.font) humidity_label.grid(row=0, column=4) self.get_humidity = tk.StringVar() humidity_label_a = tk.Label(self.root, textvariable=self.get_humidity, font=self.font) humidity_label_a.grid(row=0, column=5) humidity_label_b = tk.Label(self.root, text="%", font=self.font) humidity_label_b.grid(row=0, column=6, padx=5) self.get_real_time = tk.StringVar() time_label = tk.Label(self.root, textvariable=self.get_real_time, font=font.Font(size=30)) time_label.grid(row=1, column=0, padx=50, columnspan=50) # 啟用線程獲取溫濕度數(shù)據(jù) T1 = threading.Thread(name='get_temperature_and_humidity', target=self.get_temperature_and_humidity, daemon=True) T1.start() # 啟用線獲取當(dāng)前時(shí)間 T2 = threading.Thread(name='get_time', target=self.get_time, daemon=True) T2.start() def get_temperature_and_humidity(self): """獲取溫濕度數(shù)據(jù),并隔一段時(shí)間更新""" while True: # 隨機(jī)獲取溫度和濕度數(shù)據(jù) self.get_temperature.set(random.randint(10, 30)) self.get_humidity.set(random.randint(10, 100)) # 獲取時(shí)間間隔3秒 time.sleep(3) # self.root.update() 來(lái)刷新窗口,使得界面能夠?qū)崟r(shí)展示最新的溫濕度數(shù)據(jù) self.root.update() def get_time(self): """獲取當(dāng)前時(shí)間""" self.get_real_time.set(time.strftime("%H:%M:%S")) # root.after(1000, self.get_time) 是Tkinter中的定時(shí)器方法,用于在指定的時(shí)間(毫秒)后執(zhí)行指定的函數(shù) # 每隔1s調(diào)用函數(shù) self.get_time 自身獲取時(shí)間 self.root.after(1000, self.get_time) if __name__ == '__main__': run = Data_Display() run.root.mainloop()
到此這篇關(guān)于python Tkinter實(shí)時(shí)顯示數(shù)據(jù)的文章就介紹到這了,更多相關(guān)python Tkinter顯示數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3中最常用的5種線程鎖實(shí)例總結(jié)
python3線程中鎖機(jī)制還是很重要的知識(shí)點(diǎn),如果大家不清楚鎖機(jī)制的話,那就一定要好好看下這篇文章,這篇文章主要給大家總結(jié)介紹了光宇Python3中最常用的5種線程鎖,需要的朋友可以參考下2021-07-07基于Python實(shí)現(xiàn)微信自動(dòng)回復(fù)功能
這篇文章主要為大家詳細(xì)介紹了Python如何通過(guò)WechatPCAPI來(lái)實(shí)現(xiàn)微信自動(dòng)回復(fù)的功能,文中的示例代碼講解詳細(xì),快跟隨小編一起動(dòng)手嘗試一下2022-06-06Flask框架debug與配置項(xiàng)的開啟與設(shè)置詳解
這篇文章主要介紹了Flask框架debug與配置項(xiàng)的開啟與設(shè)置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-09-09Matplotlib自定義坐標(biāo)軸刻度的實(shí)現(xiàn)示例
這篇文章主要介紹了Matplotlib自定義坐標(biāo)軸刻度的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06