游戏专用....

游戏专用:星际战甲

APP窗口以及键鼠监控

python3 复制代码
import tkinter as tk
import time,threading
from pynput.keyboard import Key,Listener
import pynput.keyboard as kb

class myClass:
    def __init__(self):
        self.root = tk.Tk()
        self.new_text = ''
        self.flag = threading.Event()
        self.th = 0
        self.mykey = kb.Controller()
        self.delete = kb.Key.delete

    def createWin(self):
        self.root.title("我的窗口")
        self.root.geometry("300x200")  
        result_text = tk.Text(self.root, height=10, width=50) 
        result_text.pack()  
        start_button = tk.Button(self.root, text="case 1", command=self.case1) 
        start_button.pack()  
        self.root.mainloop()
        
    def case1(self):
        self.winCase1 = tk.Toplevel(self.root) 
        self.winCase1.title("caseA")
        self.new_text = tk.Text(self.winCase1, height=50, width=50)  
        self.new_text.grid(row=0, column=0,rowspan=50,padx=50, pady=0)
        start_button = tk.Button(self.winCase1, text='garuda', command=self.start_garuda)
        start_button.grid(row=0, column=0, sticky=tk.W)
        start_button = tk.Button(self.winCase1, text='nekros', command=self.start_nekros)
        start_button.grid(row=1, column=0, sticky=tk.W)

    def wlog(self,msg):
    	#输出消息到文本框
        self.new_text.insert('end', msg+"\n")
        self.new_text.yview('end')        
    def on_release(self,key):
        pass
    # garuda
    def start_garuda(self):
        t = threading.Thread(target=self.run_garuda)
        t.start()
        self.new_text.delete(1.0, tk.END)
        msg = "= 开始模拟输入 \n- 停止模拟输入 \ndelete 退出键盘监控"
        self.wlog(msg)
    def run_garuda(self):
        self.run_garuda_ctl()
    def garuda_press(self,key):
        try:
            key = key.char
        except AttributeError:
            key = key
        if key == Key.delete:
            self.wlog("停止监听")
            self.flag.set()
            self.th = 0
            return False
        elif key == '=':
            self.flag.clear()   #先清除flag状态,重置为False
            if self.th == 0:
                self.wlog("开始模拟键盘输入")
                t = threading.Thread(target=self.garuda_keyCtr)
                t.start()
                self.th = 1
        elif key == '-':
            self.flag.set()
            self.th = 0
            self.wlog("pause...")
        else:
            self.wlog("模拟按下了{}".format(key))
    def garuda_keyCtr(self):
        mykey = self.mykey
        while True:
            for i in range(0,30):
                if self.flag.is_set():       #假如 flag.set()设置了,状态为True
                    break
                mykey.press('1')        #按下 1 键
                mykey.release('1')      #松开 1 键
                time.sleep(0.5)
            if self.flag.is_set():
                break
            else:
                mykey.press('3')
                mykey.release('3')
                time.sleep(1)
            for j in range(0,2):
                if self.flag.is_set():
                    break
                mykey.press('1')
                mykey.release('1')
                time.sleep(1)
                mykey.press('5')
                mykey.release('5')
                time.sleep(1)   
    def run_garuda_ctl(self):
        self.mykey.press(self.delete)
        self.mykey.release(self.delete)
        with Listener(on_press=self.garuda_press,on_release=self.on_release) as listener:
            listener.join()
    # garuda
    # nekros
    def start_nekros(self):
        t = threading.Thread(target=self.run_nekros)
        t.start()
        self.new_text.delete(1.0, tk.END)
        msg = "= 开始模拟输入 \n- 停止模拟输入 \ndelete 退出键盘监控"
        self.wlog(msg)
    def run_nekros(self):
        self.run_nekros_ctl()
    def nekros_press(self,key):
        try:
            key = key.char
        except AttributeError:
            key = key
        if key == Key.delete:
            self.wlog("停止监听")
            self.flag.set()
            self.th = 0
            return False
        elif key == '=':
            self.flag.clear()   #先清除flag状态,重置为False
            if self.th == 0:
                self.wlog("开始模拟键盘输入")
                t = threading.Thread(target=self.nekros_keyCtr)
                t.start()
                self.th = 1
        elif key == '-':
            self.flag.set()
            self.th = 0
            self.wlog("pause...")
        else:
            self.wlog("模拟按下了{}".format(key))        
    def nekros_keyCtr(self):
        mykey = self.mykey
        while True:
            for i in range(0,10):
                if self.flag.is_set():       #假如 flag.set()设置了,状态为True
                    break
                mykey.press('1')        #按下 1 键
                mykey.release('1')      #松开 1 键
                time.sleep(4)
            if self.flag.is_set():
                break
            else:
                mykey.press('4')
                mykey.release('4')
                time.sleep(5) 
    def run_nekros_ctl(self):
        self.mykey.press(self.delete)
        self.mykey.release(self.delete)
        with Listener(on_press=self.nekros_press,on_release=self.on_release) as listener:
            listener.join()
if __name__ == "__main__":
    mycase = myClass()
    mycase.createWin()
相关推荐
知乎的哥廷根数学学派7 小时前
面向可信机械故障诊断的自适应置信度惩罚深度校准算法(Pytorch)
人工智能·pytorch·python·深度学习·算法·机器学习·矩阵
且去填词8 小时前
DeepSeek :基于 Schema 推理与自愈机制的智能 ETL
数据仓库·人工智能·python·语言模型·etl·schema·deepseek
人工干智能8 小时前
OpenAI Assistants API 中 client.beta.threads.messages.create方法,兼谈一星*和两星**解包
python·llm
databook8 小时前
当条形图遇上极坐标:径向与圆形条形图的视觉革命
python·数据分析·数据可视化
阿部多瑞 ABU8 小时前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
acanab8 小时前
VScode python插件
ide·vscode·python
知乎的哥廷根数学学派9 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
WangYaolove131410 小时前
Python基于大数据的电影市场预测分析(源码+文档)
python·django·毕业设计·源码
知乎的哥廷根数学学派10 小时前
基于自适应多尺度小波核编码与注意力增强的脉冲神经网络机械故障诊断(Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习
i橡皮擦11 小时前
TheIsle恐龙岛读取游戏基址做插件(C#语言)
开发语言·游戏·c#·恐龙岛·theisle