从python中的函数调用键盘记录程序将进入"无响应"状态



我有一个python文件GUIApp.py,它创建了一个基于TkinterGUI的窗口,现在点击提交,我希望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"), level=logging.INFO, 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",width=10, fg="blue", command=opening)   
a.pack(side=tk.LEFT)

top.mainloop() 

键盘记录器.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() 

最新更新