python 自动远程输入文本

import tkinter as tk
import threading
import time
import keyboard

class TextTyperApp:
    def __init__(self, master):
        self.master = master
        master.title("敲字工具(ESC键中断输入)")

        self.textbox = tk.Text(master)
        self.textbox.pack()

        self.speed_label = tk.Label(master, text="自定义每个字用多少秒:")
        # self.speed_label = tk.Label(master, text="每输入多少个字停顿0.01秒:")
        self.speed_label.pack()

        self.speed_entry = tk.Entry(master)
        self.speed_entry.insert(tk.END, "0.01")
        # self.speed_entry.insert(tk.END, "10")
        self.speed_entry.pack()

        self.start_button = tk.Button(master, text="按下本按钮,5秒后自动键入上述内容\n(然后点击你想输入的区域,你有5秒选择输入区域的时间)\n《请确保输入区域能安全输入回车等键》", command=self.start_typing, bg="white", fg="black")
        self.start_button.pack()

        self.stop_typing_flag = False  # 用于中断输入的标志

    def start_typing(self):
        # 获取文本框中的内容
        text = self.textbox.get("1.0", "end-1c")
        if text.strip() == "":
            return
        # 获取输入速度
        speed = float(self.speed_entry.get())
        # 禁用按钮
        self.start_button.config(state="disabled")
        # 倒计时
        for i in range(5):
            self.start_button.config(text=f"将在 {5 - i} 秒后开始模拟键盘输入", bg="red", fg="white")
            time.sleep(1)
        self.start_button.config(text="输入中 (按ESC紧急中断)", bg="red", fg="white")
        # 启动模拟键盘输入线程
        self.stop_typing_flag = False  # 重置中断标志
        threading.Thread(target=self.type_text_thread, args=(text, speed)).start()

    def type_text_thread(self, text, speed):
        # 监听 ESC 键
        keyboard.add_hotkey('esc', self.stop_typing)

        # # 模拟键盘输入
        print(text)
        print(len(text))
        for char in text:
            if self.stop_typing_flag:
                break
            keyboard.write(char)
            time.sleep(speed)

        # 模拟键盘输入
        # counter = 0
        # for char in text:
        #     counter += 1
        #     if self.stop_typing_flag:
        #         break
        #     keyboard.write(char)
        #     if counter % speed == 0:
        #         time.sleep(0.01)

        # 解除 ESC 键的监听
        keyboard.remove_hotkey('esc')

        # 重新启用按钮
        self.start_button.config(state="normal", text="按下本按钮,5秒后自动键入上述内容\n(然后点击你想输入的区域,你有5秒选择输入区域的时间)\n《请确保输入区域能安全输入回车等键》", bg="white", fg="black")

    def stop_typing(self):
        self.stop_typing_flag = True

def main():
    root = tk.Tk()
    app = TextTyperApp(root)
    root.mainloop()

if __name__ == "__main__":
    main()

posted on 2025-11-11 16:19  renshaoping  阅读(7)  评论(0)    收藏  举报