游戏专用....

游戏专用:星际战甲

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()
相关推荐
weixin_527550405 分钟前
初级程序员入门指南
javascript·python·算法
程序员的世界你不懂25 分钟前
Appium+python自动化(十)- 元素定位
python·appium·自动化
CryptoPP1 小时前
使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
后端·python·websocket·网络协议·区块链
树叶@1 小时前
Python数据分析7
开发语言·python
老胖闲聊2 小时前
Python Rio 【图像处理】库简介
开发语言·图像处理·python
码界奇点3 小时前
Python Flask文件处理与异常处理实战指南
开发语言·python·自然语言处理·flask·python3.11
浠寒AI3 小时前
智能体模式篇(上)- 深入 ReAct:LangGraph构建能自主思考与行动的 AI
人工智能·python
FakeOccupational4 小时前
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
网络·游戏
行云流水剑4 小时前
【学习记录】如何使用 Python 提取 PDF 文件中的内容
python·学习·pdf
心扬4 小时前
python生成器
开发语言·python