累计签到:19 天 连续签到:8 天
|
人生第一个小软件,孬好的大佬们凑合看
这个软件是为了实现离开办公室的时候自动锁定微信
前提是手机和电脑都在同一个wifi下
手机离开当前wifi后,微信自动锁定
手机需提前设置固定ip
时间间隔建议30秒,因为会连续两次ping不通才会锁定
关闭软件自动缩小到后台运行,右键退出和现实
我也不知道为什么这么点代码这么大的exe,
360会报,不放心可以复制代码自己打包,
技术不精,可能会有误锁定,我也不清楚是咋回事。。。。
测试几天后发现不好用,要么假死要么不锁的,
我也没勇气来论坛看回复,向各位下载试用过的朋友表示歉意
至今搞不清楚是哪里的问题...
管理看到麻烦删帖,下次发帖前会多测试几天{:1_896:}
成品如下:
rgb
代码如下:
[Python] 纯文本查看 复制代码import tkinter as tkfrom tkinter import messagebox, scrolledtextimport threadingimport timeimport subprocessimport pyautoguifrom pystray import MenuItem as itemimport pystrayfrom PIL import Image, ImageDrawimport queueclass WeChatLocker: def __init__(self, root): self.root = root self.root.title("微信自动锁") # --- GUI Elements --- main_frame = tk.Frame(root) main_frame.pack(padx=10, pady=10) tk.Label(main_frame, text="手机IP地址:").grid(row=0, column=0, sticky='w', pady=2) self.ip_entry = tk.Entry(main_frame, width=25) self.ip_entry.grid(row=0, column=1, pady=2) tk.Label(main_frame, text="间隔时间(秒):").grid(row=1, column=0, sticky='w', pady=2) self.interval_entry = tk.Entry(main_frame, width=25) self.interval_entry.grid(row=1, column=1, pady=2) self.interval_entry.insert(0, "5") button_frame = tk.Frame(main_frame) button_frame.grid(row=2, columnspan=2, pady=10) self.start_button = tk.Button(button_frame, text="运行", command=self.start_locking) self.start_button.pack(side=tk.LEFT, padx=5) self.stop_button = tk.Button(button_frame, text="停止", command=self.stop_locking, state=tk.DISABLED) self.stop_button.pack(side=tk.LEFT, padx=5) tk.Label(main_frame, text="运行信息:").grid(row=3, column=0, sticky='w', pady=2) self.info_display = scrolledtext.ScrolledText(main_frame, height=10, width=40, state='normal') self.info_display.grid(row=4, columnspan=2, pady=5) self.info_display.insert(tk.END, "为避免误ping,连续2次ping不通才会锁定\n建议间隔时间30秒(30秒×2=1分钟)\n52pojie@文火慢燉\n") self.info_display.config(state='disabled') # --- State and Threading --- self.is_running = False self.thread = None self.message_queue = queue.Queue() # --- System Tray and Window Management --- self.root.protocol("WM_DELETE_WINDOW", self.hide_to_tray) self.icon = None self.process_queue() def log_message(self, message): self.message_queue.put(message) def process_queue(self): try: while True: message = self.message_queue.get_nowait() self.info_display.config(state='normal') self.info_display.insert(tk.END, f"{time.strftime('%H:%M:%S')} - {message}\n") self.info_display.see(tk.END) self.info_display.config(state='disabled') except queue.Empty: pass self.root.after(100, self.process_queue) def create_image(self): image = Image.new('RGB', (64, 64), 'black') dc = ImageDraw.Draw(image) dc.rectangle((10, 10, 54, 54), fill='white') return image def hide_to_tray(self): self.root.withdraw() image = self.create_image() menu = (item('显示', self.show_window), item('退出', self.quit_window)) self.icon = pystray.Icon("WeChatLocker", image, "微信自动锁定", menu) self.icon.run() def show_window(self): if self.icon: self.icon.stop() self.root.deiconify() def quit_window(self): self.stop_locking() if self.icon: self.icon.stop() self.root.destroy() def start_locking(self): ip = self.ip_entry.get() interval_str = self.interval_entry.get() if not ip: messagebox.showerror("错误", "请输入IP地址") return try: interval = int(interval_str) if interval |
精密测量技术论坛免责声明
✈️重要声明:以上内容仅代表该作者观点,不代表本站精密测量技术论坛立场。
✅如有涉及侵权请尽快告知,我们将会在第一时间处理。作者原创内容未经允许不得转载!
📱 站长联系邮箱:1339305021@qq.com
📱 站长联系微信:dddnnbbb
|