今日阅读:

今日软件:

今日代码:

检测断网的小软件,很简单的一个 Ping 百度然后记录日志。

import tkinter as tk
from tkinter.scrolledtext import ScrolledText
import requests
import threading
import time
import logging
 
class NetworkMonitorApp:
    def __init__(self, root):
        self.root = root
        self.root.title("网络监控")
 
        self.monitoring = False
        self.log = []
 
        self.start_stop_button = tk.Button(root, text="开始监控", command=self.toggle_monitoring, bg="red", fg="white")
        self.start_stop_button.pack(pady=10)
 
        self.log_display = ScrolledText(root, width=50, height=20, state='disabled')
        self.log_display.pack(pady=10)
 
        self.update_log_display()
 
        # 设置日志文件
        logging.basicConfig(filename='network_log.txt', level=logging.INFO, format='%(asctime)s - %(message)s')
 
    def toggle_monitoring(self):
        if self.monitoring:
            self.monitoring = False
            self.start_stop_button.config(text="开始监控", bg="red")
        else:
            self.monitoring = True
            self.start_stop_button.config(text="停止监控", bg="green")
            threading.Thread(target=self.monitor_network, daemon=True).start()
 
    def monitor_network(self):
        while self.monitoring:
            status = self.check_internet()
            log_entry = f"{time.strftime('%Y-%m-%d %H:%M:%S')} - {'Network is up' if status else 'Network is down'}"
            self.log.append(log_entry)
 
            if len(self.log) > 100:
                self.log.pop(0)
 
            # 写入日志文件
            logging.info(log_entry)
 
            self.update_log_display()
            time.sleep(10)
 
    def check_internet(self):
        url = "http://www.baidu.com"
        timeout = 5
        try:
            _ = requests.get(url, timeout=timeout)
            return True
        except requests.ConnectionError:
            return False
 
    def update_log_display(self):
        self.log_display.config(state='normal')
        self.log_display.delete(1.0, tk.END)
        self.log_display.insert(tk.END, "\n".join(self.log))
        self.log_display.config(state='disabled')
        self.log_display.see(tk.END)
        if self.monitoring:
            self.root.after(1000, self.update_log_display)
 
if __name__ == "__main__":
    root = tk.Tk()
    app = NetworkMonitorApp(root)
    root.mainloop()

今日见闻:

今日废话:

周末加班的日子反而更舒服,个人空间足够。