A-A+

键盘控制脚本 – 键盘某键连续点击python脚本

2024年03月07日 09:52 精品软件 暂无评论 共5267字 (阅读235 views次)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import tkinter as tk
from threading import Thread
import time
import keyboard
 
class KeyPresser:
    def __init__(self, root):
        self.root = root
        self.root.title("键盘控制工具")
 
        self.start_button = tk.Button(root, text="开始", command=self.start_pressed)
        self.start_button.pack(pady=10)
 
        self.stop_button = tk.Button(root, text="停止", command=self.stop_pressed, state=tk.DISABLED)
        self.stop_button.pack(pady=10)
 
        self.key_label = tk.Label(root, text="设置需要连续点击的按钮键:")
        self.key_label.pack()
 
        self.key_entry = tk.Entry(root)
        self.key_entry.pack(pady=10)
 
        self.duration_label = tk.Label(root, text="设置按键间隔(秒):")
        self.duration_label.pack()
 
        self.duration_entry = tk.Entry(root)
        self.duration_entry.pack(pady=10)
 
        self.count_label = tk.Label(root, text="设定按键执行次数:")
        self.count_label.pack()
 
        self.count_entry = tk.Entry(root)
        self.count_entry.pack(pady=10)
 
        self.log_text = tk.Text(root, height=10, width=40)
        self.log_text.pack(pady=10)
 
        self.running = False
        self.total_press_count = 0
        self.target_press_count = 0
 
    def start_pressed(self):
        start_key = self.key_entry.get()
        duration = float(self.duration_entry.get())
        self.target_press_count = int(self.count_entry.get())
 
        if not self.running:
            self.running = True
            self.start_button.config(state=tk.DISABLED)
            self.stop_button.config(state=tk.NORMAL)
            self.total_press_count = 0
 
            Thread(target=self.run_key_press, args=(start_key, duration)).start()
 
    def stop_pressed(self):
        self.running = False
        self.start_button.config(state=tk.NORMAL)
        self.stop_button.config(state=tk.DISABLED)
 
    def run_key_press(self, start_key, duration):
        try:
            while self.running and self.total_press_count < self.target_press_count:
                keyboard.press_and_release(start_key)
                self.total_press_count += 1
                self.log_text.insert(tk.END, f"按键次数: {self.total_press_count}\n")
                self.log_text.see(tk.END)  # 滚动到文本框底部
                time.sleep(duration)
 
            self.running = False
            self.start_button.config(state=tk.NORMAL)
            self.stop_button.config(state=tk.DISABLED)
        except keyboard.Unavailable:
            self.running = False
            self.start_button.config(state=tk.NORMAL)
            self.stop_button.config(state=tk.DISABLED)
 
if __name__ == "__main__":
    root = tk.Tk()
    key_presser = KeyPresser(root)
    root.mainloop()

 

运行后截图

images

 

通过AI进行了优化,升级版代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import tkinter as tk
from tkinter import filedialog
from threading import Thread
import time
import keyboard
import webbrowser
 
class KeyPresser:
    def __init__(self, root):
        self.root = root
        self.root.title("键盘控制工具")
 
        self.button_frame = tk.Frame(root)
        self.button_frame.pack(pady=10)
 
        self.start_button = tk.Button(self.button_frame, text="开始", command=self.start_pressed)
        self.start_button.pack(side=tk.LEFT, padx=5)
 
        self.stop_button = tk.Button(self.button_frame, text="停止", command=self.stop_pressed, state=tk.DISABLED)
        self.stop_button.pack(side=tk.LEFT, padx=5)
 
        self.clear_button = tk.Button(root, text="清除日志", command=self.clear_log)
        self.clear_button.pack(pady=10)
 
        self.disable_button = tk.Button(root, text="禁用输入", command=self.disable_inputs)
        self.disable_button.pack(pady=10)
 
        self.enable_button = tk.Button(root, text="启用输入", command=self.enable_inputs)
        self.enable_button.pack(pady=10)
 
        self.save_button = tk.Button(root, text="保存日志", command=self.save_log)
        self.save_button.pack(pady=10)
 
        self.key_label = tk.Label(root, text="设置需要连续点击的按钮键:")
        self.key_label.pack()
 
        self.key_entry = tk.Entry(root)
        self.key_entry.pack(pady=10)
 
        self.duration_label = tk.Label(root, text="设置按键间隔(秒):")
        self.duration_label.pack()
 
        self.duration_entry = tk.Entry(root)
        self.duration_entry.pack(pady=10)
 
        self.count_label = tk.Label(root, text="设定按键执行次数:")
        self.count_label.pack()
 
        self.count_entry = tk.Entry(root)
        self.count_entry.pack(pady=10)
 
        self.log_text = tk.Text(root, height=10, width=40)
        self.log_text.pack(pady=10)
 
        self.running = False
        self.total_press_count = 0
        self.target_press_count = 0
 
    def start_pressed(self):
        start_key = self.key_entry.get()
        duration = float(self.duration_entry.get())
        self.target_press_count = int(self.count_entry.get())
 
        if not self.running:
            self.running = True
            self.start_button.config(state=tk.DISABLED)
            self.stop_button.config(state=tk.NORMAL)
            self.total_press_count = 0
 
            Thread(target=self.run_key_press, args=(start_key, duration)).start()
 
    def stop_pressed(self):
        self.running = False
        self.start_button.config(state=tk.NORMAL)
        self.stop_button.config(state=tk.DISABLED)
 
    def run_key_press(self, start_key, duration):
        try:
            while self.running and self.total_press_count < self.target_press_count:
                keyboard.press_and_release(start_key)
                self.total_press_count += 1
                self.log_text.insert(tk.END, f"按键次数: {self.total_press_count}\n")
                self.log_text.see(tk.END)  # 滚动到文本框底部
                time.sleep(duration)
 
            self.running = False
            self.start_button.config(state=tk.NORMAL)
            self.stop_button.config(state=tk.DISABLED)
            self.log_text.insert(tk.END, "按键执行完成。\n")
            self.log_text.see(tk.END)  # 滚动到文本框底部
        except keyboard.Unavailable:
            self.running = False
            self.start_button.config(state=tk.NORMAL)
            self.stop_button.config(state=tk.DISABLED)
            self.log_text.insert(tk.END, "按键不可用,请检查按键设置或其他程序占用。\n")
            self.log_text.see(tk.END)  # 滚动到文本框底部
 
    def clear_log(self):
        self.log_text.delete(1.0, tk.END)
 
    def disable_inputs(self):
        self.key_entry.config(state=tk.DISABLED)
        self.duration_entry.config(state=tk.DISABLED)
        self.count_entry.config(state=tk.DISABLED)
 
    def enable_inputs(self):
        self.key_entry.config(state=tk.NORMAL)
        self.duration_entry.config(state=tk.NORMAL)
        self.count_entry.config(state=tk.NORMAL)
 
    def save_log(self):
        filename = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=[("Text Files", "*.txt")])
        if filename:
            with open(filename, "w") as file:
                file.write(self.log_text.get(1.0, tk.END))
 
if __name__ == "__main__":
    root = tk.Tk()
    key_presser = KeyPresser(root)
    root.mainloop()

 

软件运行截图如下:

images

布施恩德可便相知重

微信扫一扫打赏

支付宝扫一扫打赏

×

给我留言