亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python+Tkinter實現軟件自動更新與提醒

 更新時間:2023年07月31日 11:11:56   作者:小鋒學長生活大爆炸  
這篇文章主要為大家詳細介紹了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('請檢查網絡設置,無法檢測到網絡連接')
            return
        if req is None or str(req.status_code) != '200':
            self.tip_show('軟件更新失敗,請檢查網絡設置,無法檢測到網絡連接')
            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('請檢查網絡設置,無法檢測到網絡連接')
            return
        if req is None or str(req.status_code) != '200':
            self.tip_show('軟件更新失敗,請檢查網絡設置,無法檢測到網絡連接')
            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):
        '''結束更新'''
        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='好的????')

遠程服務器的文件格式:

{
  "soft_version": "1.0.0",
  "soft_url": "http://xfxuezhang.cn/web/share/version/update_demo.exe"
}

到此這篇關于Python+Tkinter實現軟件自動更新與提醒的文章就介紹到這了,更多相關Python Tkinter軟件自動更新提醒內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Pytorch 神經網絡—自定義數據集上實現教程

    Pytorch 神經網絡—自定義數據集上實現教程

    今天小編就為大家分享一篇Pytorch 神經網絡—自定義數據集上實現教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • appium中常見的幾種點擊方式

    appium中常見的幾種點擊方式

    本文主要介紹了appium中常見的幾種點擊方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python搭建Gitee圖床的示例代碼

    Python搭建Gitee圖床的示例代碼

    在寫博客的過程中經常要插入圖片,本文將使用Python實現對上傳的圖片自動壓縮,自動編碼,以及自動推送到遠程倉庫,感興趣的可以了解一下
    2021-10-10
  • Python列表去重的幾種方法整理

    Python列表去重的幾種方法整理

    這篇文章介紹了Python列表去重的幾種方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Sentry錯誤日志監(jiān)控使用方法解析

    Sentry錯誤日志監(jiān)控使用方法解析

    這篇文章主要介紹了Sentry錯誤日志監(jiān)控使用方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Selenium定時刷新網頁的實現代碼

    Selenium定時刷新網頁的實現代碼

    這篇文章主要介紹了Selenium定時刷新網頁的實現代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • 基于Python-turtle庫繪制路飛的草帽骷髏旗、美國隊長的盾牌、高達的源碼

    基于Python-turtle庫繪制路飛的草帽骷髏旗、美國隊長的盾牌、高達的源碼

    這篇文章主要介紹了基于Python-turtle庫繪制路飛的草帽骷髏旗、美國隊長的盾牌、高達的源碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • python中response.text 和response.content的區(qū)別詳解

    python中response.text 和response.content的區(qū)別詳解

    這篇文章主要介紹了python中response.text 和response.content的區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python中正則表達式的使用詳解

    python中正則表達式的使用詳解

    這篇文章主要介紹了python中正則表達式的使用詳解,另附上一些常用的Python正則例子,有需要的朋友可以參考下
    2014-10-10
  • Python方法的延遲加載的示例代碼

    Python方法的延遲加載的示例代碼

    本篇文章主要介紹了Python方法的延遲加載的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論