自动化脚本让一切更自然!

Python游戏自动化脚本|千花代码分享基地-Mrnsht.com

当前位置: 主页 > 脚本代码

软件版本号自动检测和更新日志

时间:2025-08-31 08:37来源:本站原创 作者:千花 点击:
完整自动化版本检测和日志更新提示,程序启动后先检查服务器版本号是否与当前版本号一致,如果不一致则自动关闭主界面弹出下载更新界面并显示更新或新增功能,若点击暂不更新

完整自动化版本检测和日志更新提示,程序启动后先检查服务器版本号是否与当前版本号一致,如果不一致则自动关闭主界面弹出下载更新界面并显示更新或新增功能,若点击暂不更新则显示主界面,点击立即更新据关闭主界面前往下载地址。


import tkinter as tk

from tkinter import messagebox, scrolledtext

import requests

import threading

import webbrowser

from packaging import version

from datetime import datetime


class VersionChecker:

   def __init__(self):

       self.current_ver = "1.0.0"

       self.version_url = "http://www.mrnsht.com/version.txt"

       self.download_url = "http://www.mrnsht.com/download"

       

       self.changelog = """1. 新增自动战斗系统

2. 修复登录异常问题

3. 优化内存占用表现

4. 增加任务追踪功能

5. 改进用户界面交互"""

       

       self.root = tk.Tk()

       self.root.iconbitmap(r"C:UsersAdministratorDesktoporehaicon.ico")

       self.root.resizable(False, False)

       self.root.withdraw()


       self.setup_ui_components()

       threading.Thread(target=self.check_update, daemon=True).start()

       self.root.mainloop()


   def setup_ui_components(self):

       self.root.title("版本号检测+更新日志")

       self.root.geometry("450x500")

       

       # 主界面内容

       main_frame = tk.Frame(self.root)

       main_frame.pack(fill=tk.BOTH, expand=True, padx=20, pady=10)

       

       tk.Label(main_frame, text="游戏自动化工具",

               font=("Arial", 16, "bold"), pady=20).pack()

       

       # 新增功能按钮

       btn_frame = tk.Frame(main_frame)

       btn_frame.pack(pady=10)

       

       tk.Button(btn_frame, text="开始任务",

                command=self.start_task,

                width=15).pack(side=tk.LEFT, padx=5)

       tk.Button(btn_frame, text="停止任务",

                command=self.stop_task,

                width=15).pack(side=tk.LEFT, padx=5)

       

       # 固定底部的日志区域

       self.log_frame = tk.Frame(self.root, height=150, bg="white")

       self.log_frame.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=False, padx=10, pady=5)

       

       tk.Label(self.log_frame, text="操作日志:",

               font=("Arial", 11, "bold"), bg="lightgray").pack(fill=tk.X)

       

       self.log_area = scrolledtext.ScrolledText(

           self.log_frame,

           height=6,

           width=60,

           wrap="word",

           state="disabled",

           font=("Consolas", 10)

       )

       self.log_area.pack(fill=tk.BOTH, expand=True)


   def start_task(self):

       self.log_message("任务已开始执行")

       

   def stop_task(self):

       self.log_message("任务已停止")


   def log_message(self, message):

       timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

       self.root.after(0, self._safe_log_update, f"[{timestamp}] {message}
")


   def _safe_log_update(self, message):

       self.log_area.config(state="normal")

       self.log_area.insert("end", message)

       self.log_area.config(state="disabled")

       self.log_area.see("end")


   def check_update(self):

       try:

           ver_response = requests.get(self.version_url, timeout=5)

           latest_ver = ver_response.text.strip()


           if version.parse(self.current_ver) < version.parse(latest_ver):

               self.root.after(0, self.show_update_dialog, latest_ver)

           else:

               self.root.after(0, self.show_main_ui)

       except Exception as e:

           self.root.after(0, self.show_main_ui)


   def show_main_ui(self):

       self.root.deiconify()


   def show_update_dialog(self, new_version):

       dialog = tk.Toplevel()

       dialog.title("软件更新提示")

       dialog.geometry("450x400")

       

       tk.Label(dialog, text="检测到新版本可用",

               font=("Arial", 12, "bold")).pack(pady=10)

       

       tk.Label(dialog, text="更新内容:",

               font=("Arial", 11, "bold"), fg="red").pack(anchor="w", padx=20)

       

       text_frame = tk.Frame(dialog)

       text = tk.Text(text_frame, height=10, width=50, wrap="word")

       scrollbar = tk.Scrollbar(text_frame, command=text.yview)

       text.config(yscrollcommand=scrollbar.set)

       

       text.insert("end", self.changelog)

       text.config(state="disabled")

       

       scrollbar.pack(side="right", fill="y")

       text.pack(side="left", fill="both", expand=True)

       text_frame.pack(fill="both", expand=True, padx=20, pady=5)

       

       btn_frame = tk.Frame(dialog)

       tk.Button(btn_frame, text="立即更新",

                command=lambda: self.update_action(dialog, True),

                width=10).pack(side="left", padx=10)

       tk.Button(btn_frame, text="以后再说",

                command=lambda: self.update_action(dialog, False),

                width=10).pack(side="left", padx=10)

       btn_frame.pack(pady=15)


   def update_action(self, dialog, confirm):

       dialog.destroy()

       if confirm:

           webbrowser.open(self.download_url)

           self.root.destroy()

       else:

           self.show_main_ui()


if __name__ == "__main__":

   VersionChecker()

(责任编辑:admin)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容