Python+Tkinter實現(xiàn)軟件自動更新與提醒
更新時間:2023年07月31日 11:11:56 作者:小鋒學(xué)長生活大爆炸
這篇文章主要為大家詳細介紹了Python如何利用Tkinter編寫一個軟件自動更新與提醒小程序,文中的示例代碼簡潔易懂,感興趣的小伙伴可以動手嘗試一下
示例演示
參考代碼
import os import _thread import shutil import subprocess import sys import requests from tkinter import Tk, Label, IntVar, DoubleVar, HORIZONTAL, messagebox from tkinter.ttk import Progressbar import pyautogui class SoftUpdateDialog: def __init__(self, soft_version): self.soft_update_url = 'http://xfxuezhang.cn/web/share/version/update_demo' self.soft_version = soft_version def init_ui(self, root): self.root = root self.root.title('軟件更新') self.root.geometry('300x100') self.progress_var = IntVar() self.label_var = DoubleVar() self.label_var.set(0.0) label = Label(self.root, text='正在更新軟件,請等待···') label.pack(pady=5) self.progress_bar = Progressbar(self.root, length=200, mode='indeterminate') self.progress_bar.pack(pady=5) def tip_show(self, msg): """消息提示""" messagebox.showwarning('提示', msg) def soft_download_with_thread(self): '''開線程下載''' # 下載txt文件 url = self.soft_update_url try: req = requests.get(url, stream=True, verify=False) except Exception: self.tip_show('請檢查網(wǎng)絡(luò)設(shè)置,無法檢測到網(wǎng)絡(luò)連接') return if req is None or str(req.status_code) != '200': self.tip_show('軟件更新失敗,請檢查網(wǎng)絡(luò)設(shè)置,無法檢測到網(wǎng)絡(luò)連接') return json_result = req.json() # 版本比對 latest_version = json_result['soft_version'] latest_soft_url = json_result['soft_url'] if self.compare_version(latest_version): # 下載進度工具條 self.progress_var.set(0) self.progress_bar.start(60) # self._soft_download(latest_soft_url, latest_version) # 軟件下載線程 _thread.start_new_thread(self._soft_download, (latest_soft_url, latest_version)) def check_version(self): url = self.soft_update_url try: req = requests.get(url, stream=True, verify=False) except Exception: self.tip_show('請檢查網(wǎng)絡(luò)設(shè)置,無法檢測到網(wǎng)絡(luò)連接') return if req is None or str(req.status_code) != '200': self.tip_show('軟件更新失敗,請檢查網(wǎng)絡(luò)設(shè)置,無法檢測到網(wǎng)絡(luò)連接') return json_result = req.json() # 版本比對 latest_version = json_result['soft_version'] return self.compare_version(latest_version) def _update_progressbar(self): '''更新進度條''' self.progress_bar['value'] = self.label_var.get() def _end_update(self): '''結(jié)束更新''' self.progress_bar.stop() self.root.destroy() def get_remote_file_size(self, url, proxy=None): """通過content-length頭獲取遠程文件大小""" try: req = requests.head(url, proxies={'http': proxy, 'https': proxy} if proxy else None, verify=False) fileSize = int(req.headers.get('Content-Length', 0)) return fileSize except Exception: return 0 def _soft_download(self, latest_url, latest_version): '''軟件下載''' self.label_var.set(0.0) lastest_name = os.path.basename(latest_url) lastest_size = self.get_remote_file_size(latest_url) start_size = 0 with requests.get(latest_url, stream=True, verify=False) as r: with open(lastest_name, "wb") as f: for chunk in r.iter_content(chunk_size=1024): if not chunk: continue start_size += len(chunk) f.write(chunk) f.flush() self.label_var.set(100.0 * start_size / lastest_size) print('>> ok') self._end_update() def compare_version(self, latest_version): return int(self.soft_version.replace('.', '')) < int(latest_version.replace('.', '')) if __name__ == '__main__': app = Tk() app.geometry('0x0') soft_dialog = SoftUpdateDialog(soft_version='0.0.5') if soft_dialog.check_version() and pyautogui.confirm(text='有新版本,是否更新', title='通知', buttons=['OK', 'Cancel'])=='OK': soft_dialog.init_ui(root=app) soft_dialog.soft_download_with_thread() app.mainloop() pyautogui.alert(text='下載完成!', title='通知', button='好的????')
遠程服務(wù)器的文件格式:
{ "soft_version": "1.0.0", "soft_url": "http://xfxuezhang.cn/web/share/version/update_demo.exe" }
到此這篇關(guān)于Python+Tkinter實現(xiàn)軟件自動更新與提醒的文章就介紹到這了,更多相關(guān)Python Tkinter軟件自動更新提醒內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytorch 神經(jīng)網(wǎng)絡(luò)—自定義數(shù)據(jù)集上實現(xiàn)教程
今天小編就為大家分享一篇Pytorch 神經(jīng)網(wǎng)絡(luò)—自定義數(shù)據(jù)集上實現(xiàn)教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Selenium定時刷新網(wǎng)頁的實現(xiàn)代碼
這篇文章主要介紹了Selenium定時刷新網(wǎng)頁的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10基于Python-turtle庫繪制路飛的草帽骷髏旗、美國隊長的盾牌、高達的源碼
這篇文章主要介紹了基于Python-turtle庫繪制路飛的草帽骷髏旗、美國隊長的盾牌、高達的源碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02python中response.text 和response.content的區(qū)別詳解
這篇文章主要介紹了python中response.text 和response.content的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05