Tkinter键盘敲击监听小工具

1. 用到的库

tkinter # Python自带的GUI库
pynput # 具有键盘监听和控制功能的库

2. 代码

import threading
import time
from pynput import keyboard
import tkinter as tkclass MyThread(threading.Thread):def __init__(self, target=None, name=None):super(MyThread, self).__init__()self._event = threading.Event()self._target = targetself._name = str(name)def run(self):self._target()class MyGUI:def __init__(self):# 显示次数的VarString变量self.times_var = None# 设置敲键盘数起始数为0self.times = 0# 初始化GUIself.root = self.init_gui()# 开启键盘监听,pynput会开启一个线程self.listener = self.start_keyboard_listen()# 每天凌晨,记录一下上一日总敲击数,这里开启了单独的线程self.timer_log()# 记录开启时间self.log('程序已开启!')self.root.mainloop()def init_gui(self):# 初始化GUI窗口_root = tk.Tk()# 设置窗口名称_root.title('键盘监听')# 设置窗口大小和位置 长x宽+左边距+上边距_root.geometry('200x120+1100+20')# 设置窗口左右不允许伸缩,左右可以伸缩_root.resizable(False, True)# 删除最小化/最大化,将窗口显示成工具栏的形式_root.attributes('-toolwindow', True)# 设置白色为透明色_root.wm_attributes('-transparentcolor', 'white')# 设置窗口图标# root.iconbitmap('键盘.ico')# 设置关闭窗口前进行的操作_root.protocol('WM_DELETE_WINDOW', self.shutdown)# 设置窗口置于顶部# self.root.wm_attributes('-topmost', 1)# 设置Lable标签文本为StringVar,以及初始化self.times_var = tk.StringVar()self.times_var.set(f'今日已敲击键盘{self.times}次')# 创建一个标签lblb = tk.Label(_root,textvariable=self.times_var,bg='DarkRed',fg='Snow',width=24,font=('宋体', 12),relief='ridge')lb.pack()# 设置一个Text文本框self.text = tk.Text(_root, width=30, height=100, bg='white')self.text.pack()self.text.configure(state='disabled')self.text_insert('程序启动!')return _rootdef timer_log(self):thread = MyThread(target=self.timer_task, name='键盘监听')thread.setDaemon(True)thread.start()def now(self):return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())def log(self, record: str):with open('record.txt', 'a') as f:f.write(self.now()+'\n')f.write(record+'\n\n')def text_insert(self, content: str):self.text.configure(state='normal')self.text.insert('insert', self.now() + '\n')self.text.insert('insert', content+'\n')self.text.configure(state='disabled')def timer_task(self):while True:flag = Trueif time.localtime().tm_hour == 1 and not flag:flag = Trueif time.localtime().tm_hour == 0 and flag:flag = False# 在text中写入今天的记录self.text_insert(f'今天您一共敲击键盘{self.times}次!')# 在txt文件中写入记录self.log(f'今天您一共敲击键盘{self.times}次!')# 重置敲击键盘总数self.times = 0self.times_var.set(f'今天您一共敲击键盘{self.times}次\n')time.sleep(1)# 按下键盘事件def on_press(self, key):# 返回False之后监听终止if key == keyboard.Key.end:print(f'截至目前您已敲击键盘{self.times}次!\n\n终止程序……')self.shutdown()# 松开键盘事件def on_release(self, key):# 每松开一次键盘,记录一次敲击self.times += 1self.times_var.set(f'今日已敲击键盘{self.times}次')# 键盘监听def start_keyboard_listen(self):listener = keyboard.Listener(on_press=self.on_press,on_release=self.on_release)listener.start()return listenerdef shutdown(self):self.log(f'程序已终止,今日已记录敲击键盘{self.times}次!')self.listener.stop()print('已经记录本日敲击键盘数!')self.root.destroy()if __name__ == '__main__':print('如要终止程序,请敲击"END"键……')GUI = MyGUI()

3. pyinstaller打包成exe文件

# -F表示生成单个可执行文件,-w表示不显示dos窗口
pyinstaller -F -i keyboard.ico -w keys.py

Tkinter键盘敲击监听小工具相关推荐

  1. 关于bupt校内上网流量监听小工具笔记

    事情的起因 在bupt每个月有20G免费流量,这个流量是上下行的总和,就是说你上传东西的流量也是计算在内的.超过20G的话就需要够买,1块钱1G. 刚开始并不知道上数据行也要计算流量,每个月总是前几天 ...

  2. Java Swing 键盘事件监听

    Java Swing 键盘事件监听 开发工具与关键技术:java. elipse2019.jdk1.8 作者:Amewin 撰写时间:2019年9月16日 键盘事件的事件源一般丐组件相关,当一个组件处 ...

  3. jquery实现上下左右键盘监听_基于 jQuery 实现键盘事件监听控件

    最近项目里要做一个画板,需要对键盘事件进行监听,来进行诸如撤回.重做.移动.缩放等操作,因此顺手实现了一个键盘事件监听控件,期间略有收获,整理出来,希望对大家有所帮助,更希望能获得高手的指点. 1. ...

  4. App逆向案例 X嘟牛 - Frida监听 WT-JS工具还原(一)

    App逆向案例 X嘟牛 - Frida监听 & WT-JS工具还原(一) 提示:文章仅供参考,禁止用于非法途径: 文章目录 App逆向案例 X嘟牛 - Frida监听 & WT-JS工 ...

  5. Ionic Cordova实现软键盘的监听 以及操作大全

    今天在做项目的时候,在键盘显示的时候隐藏某些操作,键盘隐藏的时候,打开某些操作.网上找了很久,才找到具体的监听事件,特此记录下来,供大家参考: 首先需要添加插件: cordova plugin add ...

  6. [Java][详解]使用jintellitype实现键盘全局监听

    [下载jintellitype] 首先要下载jintellitype-1.3.9,这里提供下载地址 [jintellitype-百度网盘下载] 链接: https://pan.baidu.com/s/ ...

  7. JS:打字游戏_键盘事件监听

    1. 打字游戏 屏幕随机出现字母或数字 用户按下键盘,屏幕显示回答正确与否 当用户按下ESC时游戏结束 <!DOCTYPE html> <html lang="en&quo ...

  8. 对EditText的软键盘进行监听-----android:imeOptions

    在android发开过程中,有时候需要对EditText的软键盘进行监听. 当点击软键盘回车位置按键的时候,需要实现 完成.前进.下一项.搜索.发送或其他功能,这就需要开发者对软键盘回车的点击事件进行 ...

  9. 键盘事件监听_键盘事件

    键盘事件监听 There are 3 types of events when interacting with keyboard events: 与键盘事件进行交互时,有3种类型的事件: keydo ...

最新文章

  1. 《 嵌入式系统设计与实践》一一3.6 测试硬件(和软件)
  2. js中的事件委托或是事件代理详解(转载)
  3. 10g TNS 13541 监听错误 tnsping可以但是conn system/manager@mult1.net 报错
  4. 字符串中包含汉字和\u,显示出汉字来
  5. group by很多字段是不是会很慢_面试官:数据量很大,分页查询很慢,有什么优化方案?...
  6. Maven(5)--常用插件
  7. Hbase 01_初学必知
  8. python3贴吧_python3模拟百度登录并实现贴吧自动签到
  9. 接口入参形式_花椒测试平台 接口篇
  10. JEEWX微信开发更便捷,Ngrok 内网穿透利器应用
  11. java springmvc https_【Java Web开发学习】Spring MVC 使用HTTP信息转换器
  12. 用SQL中的isnull函数注意了
  13. 这么说吧,NIO很简单,其实就是个牛逼IO
  14. 利用JS实现点击按钮后图片自动切换
  15. postgis学习(二)之几何图形
  16. Couchbase使用入门
  17. python xlsxwriter下载_python_xlsxwriter模块
  18. PX4 ---- Mixer
  19. 基于node+mysql的微信商城小程序全栈系统(vue后台管理系统+微信小程序+node服务端)
  20. Regex 量词Quantifier 分组group

热门文章

  1. Redis主从、哨兵、集群原理
  2. python爬虫下载链接_【Python项目】简单爬虫批量获取资源网站的下载链接
  3. Allegro中尺寸标注显示小数点后位数
  4. 手机获取短信验证码登陆
  5. 【K8S】Kubernetes常用命令
  6. 顺丰控股业绩炸雷:王卫道歉后仍跌跌不休,券商研报继续蒙眼喊单
  7. 2020年最新中国行政地区三级、四级、五级地址库(包含京东)
  8. Dajngo数据模型
  9. rom 是计算机的__,蘑菇ROM助手
  10. android 判断 手机 是否 打开 允许模拟位置 选项