自动发消息程序

简介: 【7月更文挑战第7天】

我写了一个自动发送消息程序

# -*- coding: utf-8 -*-
import time
import threading
from pynput import mouse, keyboard
from tkinter import Tk, Label, Entry, Button

class AutoTyper:
    def __init__(self, root):
        self.root = root
        self.root.title("Auto Typer")
        self.root.geometry("300x150")

        self.message_label = Label(root, text="Message:")
        self.message_label.pack()
        self.message_entry = Entry(root)
        self.message_entry.pack()

        self.interval_label = Label(root, text="Interval (seconds):")
        self.interval_label.pack()
        self.interval_entry = Entry(root)
        self.interval_entry.pack()

        self.start_button = Button(root, text="Start", command=self.prepare_typing)
        self.start_button.pack()

        self.running = False
        self.listener = None
        self.ready_to_start = False

    def prepare_typing(self):
        self.message = self.message_entry.get()
        self.interval = float(self.interval_entry.get())

        if self.listener:
            self.listener.stop()

        self.listener = mouse.Listener(on_click=self.on_click, on_move=self.on_move)
        self.listener.start()
        self.ready_to_start = True

    def on_click(self, x, y, button, pressed):
        if button == mouse.Button.left and pressed:
            if self.ready_to_start and not self.running:
                self.mouse_position = (x, y)
                self.running = True
                self.ready_to_start = False
                threading.Thread(target=self.type_message).start()

    def on_move(self, x, y):
        if self.running:
            self.running = False

    def type_message(self):
        my_mouse = mouse.Controller()
        my_keyboard = keyboard.Controller()
        count = 0

        while self.running:
            my_keyboard.type(f'{self.message}')
            my_keyboard.press(keyboard.Key.enter)
            my_keyboard.release(keyboard.Key.enter)
            count += 1
            time.sleep(self.interval)

if __name__ == "__main__":
    root = Tk()
    app = AutoTyper(root)
    root.mainloop()

增加 ready_to_start 标志:

在 prepare_typing 方法中设置 self.ready_to_start = True 表示准备开始。
在 on_click 方法中,当 self.ready_to_start 为 True 并且 self.running 为 False 时,启动消息发送。
点击鼠标左键时启动消息发送:

仅当 self.ready_to_start 为 True 时记录鼠标位置并开始发送消息,发送消息后将 self.ready_to_start 设置为 False。
鼠标移动时停止消息发送:

保持现有逻辑,当检测到鼠标移动时,将 self.running 设置为 False。

目录
相关文章
|
JavaScript 前端开发 Java
11 个最佳的 Python 编译器和解释器
11 个最佳的 Python 编译器和解释器
887 1
|
数据安全/隐私保护
如何实现Coupa PunchOut ,如何的实现通过CXML交互?
如何实现Coupa PunchOut ,如何的实现通过CXML交互?
1036 0
|
消息中间件 SQL 大数据
Hologres 在大数据实时处理中的应用
【9月更文第1天】随着大数据技术的发展,实时数据处理成为企业获取竞争优势的关键。传统的批处理框架虽然在处理大量历史数据时表现出色,但在应对实时数据流时却显得力不从心。阿里云的 Hologres 是一款全托管、实时的交互式分析服务,它不仅支持 SQL 查询,还能够与 Kafka、MaxCompute 等多种数据源无缝对接,非常适合于实时数据处理和分析。
416 2
|
前端开发 容器
CSS弹性盒子知识点
CSS弹性盒子知识点
|
自然语言处理 算法 API
「AIGC」Python实现tokens算法
使用Python的`transformers`库,通过`AutoTokenizer`初始化BERT tokenizer,对文本进行分词统计,减少API调用。示例展示从开始到结束的时间,包括文本转换为tokens的数量和过程耗时。
552 0
「AIGC」Python实现tokens算法
|
存储 监控 测试技术
Agent Workflow
【6月更文挑战第25天】
990 3
|
开发工具 Python
【python】如何通过python来发送短信
【python】如何通过python来发送短信
1550 1
|
前端开发 JavaScript
前端 JS 经典:数字变化动画
前端 JS 经典:数字变化动画
357 0
|
移动开发 小程序 API
uniapp通过蓝牙传输数据 (ios)
uniapp通过蓝牙传输数据 (ios)
905 1
|
Java API 开发工具
个人微信api接口java调用源代码
个人微信api接口java调用源代码