lanshiqin / lanshiqin-blog

我的Hexo博客

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

使用Python实现一个按键精灵 | 蓝士钦

lanshiqin opened this issue · comments

https://www.lanshiqin.com/2fb233e2/#more

按键精灵想必很多人都玩过,使用录制功能将鼠标和键盘的操作录制下来,录制好后就可以通过回放自动执行之前录制的操作,可以设置重复执行的次数,这样就可以将一些重复的劳动交给脚本自动化去完成。使用Python编写一个和脚本精灵一样的程序非常简单,并且代码量足够少,好处是可以不再依赖按键精灵,像我这种有轻微洁癖的程序猿就喜欢自己动手实现,依赖Python的为所欲为的特性,可以任意编码让自己的按键精灵更加强大

请问 python 版本 , 我在 windows10 .... python2.7 改了
import Tkinter as tk
from Tkinter import *
.....
root = Tk()
没用过 tk 改不出来 .....出现

Traceback (most recent call last):
File "C:\Users\chio\Desktop\key-mouse.py", line 259, in
listenerStartLabel = tkinter.Label(root, text='录制倒计时')
AttributeError: 'module' object has no attribute 'Label'

这边还是先备份了 您的程式看看能不能改 ...
还是您可改的出来 ?
还是您用 python3.X 的原因 ?

请问 python 版本 , 我在 windows10 .... python2.7 改了
import Tkinter as tk
from Tkinter import *
.....
root = Tk()
没用过 tk 改不出来 .....出现

Traceback (most recent call last):
File "C:\Users\chio\Desktop\key-mouse.py", line 259, in
listenerStartLabel = tkinter.Label(root, text='录制倒计时')
AttributeError: 'module' object has no attribute 'Label'

这边还是先备份了 您的程式看看能不能改 ...
还是您可改的出来 ?
还是您用 python3.X 的原因 ?

你好,这个问题从错误信息上看已经很明显了,是import 的名字不对,导致259行报错了,tkinter.Label没有Label这个属性方法,你需要import Tk包的名字为tkinter

鼠标动作监听

class MouseActionListener(threading.Thread):

E_sc = False ----->>>这里放一个标识变量
def init(self, file_name='mouse.action'):

##################################

        def on_release(key):
            if key == keyboard.Key.esc:
                停止监听
                startListenerBtn['text'] = '开始录制'
                startListenerBtn['state'] = 'normal'
                MouseActionListener.E_sc = True       ---->>>修改刚刚设置的鼠标监听类的标识变量为True
                keyboardListener.stop()

####################################

鼠标移动事件

        def on_move(x, y):
            if self.E_sc == True:      ----->>>监听到鼠标移动时先判断这个标识变量是否为true,为true说明按下了esc键,就进行线程关闭。
                mouseListener.stop()

@HANK1998

鼠标动作监听

class MouseActionListener(threading.Thread):

E_sc = False ----->>>这里放一个标识变量
def init(self, file_name='mouse.action'):

##################################

        def on_release(key):
            if key == keyboard.Key.esc:
                停止监听
                startListenerBtn['text'] = '开始录制'
                startListenerBtn['state'] = 'normal'
                MouseActionListener.E_sc = True       ---->>>修改刚刚设置的鼠标监听类的标识变量为True
                keyboardListener.stop()

####################################

鼠标移动事件

        def on_move(x, y):
            if self.E_sc == True:      ----->>>监听到鼠标移动时先判断这个标识变量是否为true,为true说明按下了esc键,就进行线程关闭。
                mouseListener.stop()

@HANK1998

鼠标动作监听

class MouseActionListener(threading.Thread):

E_sc = False ----->>>这里放一个标识变量
def init(self, file_name='mouse.action'):

##################################

        def on_release(key):
            if key == keyboard.Key.esc:
                停止监听
                startListenerBtn['text'] = '开始录制'
                startListenerBtn['state'] = 'normal'
                MouseActionListener.E_sc = True       ---->>>修改刚刚设置的鼠标监听类的标识变量为True
                keyboardListener.stop()

####################################

鼠标移动事件

        def on_move(x, y):
            if self.E_sc == True:      ----->>>监听到鼠标移动时先判断这个标识变量是否为true,为true说明按下了esc键,就进行线程关闭。
                mouseListener.stop()

非常感谢你的建议,目前已经按照这个方案修复(^▽^)

@HANK1998
其实,你这个代码,还有一个问题,鼠标键盘动作回放时,顺序会乱,线程同步问题,做不到鼠标动作和键盘动作交叉执行。,,我能力不太够了,,学的不深,不知道这个问题你解决没???

------------------ 原始邮件 ------------------
发件人: "蓝士钦"notifications@github.com;
发送时间: 2019年8月9日(星期五) 中午11:43
收件人: "lanshiqin/lanshiqin-blog"lanshiqin-blog@noreply.github.com;
抄送: "常宏朝"595777097@qq.com; "Mention"mention@noreply.github.com;
主题: Re: [lanshiqin/lanshiqin-blog] 使用Python实现一个按键精灵 | 蓝士钦 (#24)

@HANK1998

鼠标动作监听

class MouseActionListener(threading.Thread):

E_sc = False ----->>>这里放一个标识变量
def init(self, file_name='mouse.action'):

##################################
def on_release(key): if key == keyboard.Key.esc: 停止监听 startListenerBtn['text'] = '开始录制' startListenerBtn['state'] = 'normal' MouseActionListener.E_sc = True ---->>>修改刚刚设置的鼠标监听类的标识变量为True keyboardListener.stop()
####################################

鼠标移动事件
def on_move(x, y): if self.E_sc == True: ----->>>监听到鼠标移动时先判断这个标识变量是否为true,为true说明按下了esc键,就进行线程关闭。 mouseListener.stop()
@HANK1998

鼠标动作监听

class MouseActionListener(threading.Thread):

E_sc = False ----->>>这里放一个标识变量
def init(self, file_name='mouse.action'):

##################################
def on_release(key): if key == keyboard.Key.esc: 停止监听 startListenerBtn['text'] = '开始录制' startListenerBtn['state'] = 'normal' MouseActionListener.E_sc = True ---->>>修改刚刚设置的鼠标监听类的标识变量为True keyboardListener.stop()
####################################

鼠标移动事件
def on_move(x, y): if self.E_sc == True: ----->>>监听到鼠标移动时先判断这个标识变量是否为true,为true说明按下了esc键,就进行线程关闭。 mouseListener.stop()
非常感谢你的建议,目前已经按照这个方案修复(^▽^)


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

@HANK1998
其实,你这个代码,还有一个问题,鼠标键盘动作回放时,顺序会乱,线程同步问题,做不到鼠标动作和键盘动作交叉执行。,,我能力不太够了,,学的不深,不知道这个问题你解决没???

------------------ 原始邮件 ------------------
发件人: "蓝士钦"notifications@github.com;
发送时间: 2019年8月9日(星期五) 中午11:43
收件人: "lanshiqin/lanshiqin-blog"lanshiqin-blog@noreply.github.com;
抄送: "常宏朝"595777097@qq.com; "Mention"mention@noreply.github.com;
主题: Re: [lanshiqin/lanshiqin-blog] 使用Python实现一个按键精灵 | 蓝士钦 (#24)

@HANK1998

鼠标动作监听

class MouseActionListener(threading.Thread):

E_sc = False ----->>>这里放一个标识变量
def init(self, file_name='mouse.action'):

##################################
def on_release(key): if key == keyboard.Key.esc: 停止监听 startListenerBtn['text'] = '开始录制' startListenerBtn['state'] = 'normal' MouseActionListener.E_sc = True ---->>>修改刚刚设置的鼠标监听类的标识变量为True keyboardListener.stop()
####################################

鼠标移动事件
def on_move(x, y): if self.E_sc == True: ----->>>监听到鼠标移动时先判断这个标识变量是否为true,为true说明按下了esc键,就进行线程关闭。 mouseListener.stop()
@HANK1998

鼠标动作监听

class MouseActionListener(threading.Thread):

E_sc = False ----->>>这里放一个标识变量
def init(self, file_name='mouse.action'):

##################################
def on_release(key): if key == keyboard.Key.esc: 停止监听 startListenerBtn['text'] = '开始录制' startListenerBtn['state'] = 'normal' MouseActionListener.E_sc = True ---->>>修改刚刚设置的鼠标监听类的标识变量为True keyboardListener.stop()
####################################

鼠标移动事件
def on_move(x, y): if self.E_sc == True: ----->>>监听到鼠标移动时先判断这个标识变量是否为true,为true说明按下了esc键,就进行线程关闭。 mouseListener.stop()
非常感谢你的建议,目前已经按照这个方案修复(^▽^)


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

嗯,我也发现了这个问题,目前的想法是把鼠标和键盘的录制写入到同一份文件,读取的时候就能够按照顺序执行,稍后我会改正,感谢指出!