Счётчик нажатий на клавиатуру

_Novichok_

Новичок
Пользователь
Июн 24, 2023
4
0
1
Здравствуйте!
Необходимо сделать простую программу, которая считает нажатия на клавиатуру. Подобие кейлоггера, но с тем отличием, что считает только нажатия и выдает только их число.

Кое-как написал код. Он считает нажатия, но полноценным его назвать нельзя.
Дело в том, что он не работает в фоновом режиме. А надо, чтобы подсчет вёлся и когда окно не активно. Дополнительная проблема - каждый раз счетчик считает заново. А надо, чтобы считал нарастающим итогом. Как дописать правильно код?

from turtle import*
from tkinter import*
def com(event): event.keysym
click =1
def turtlemouv(event):
global click
click+=1
t.config(text = click)

w = Tk()
w.geometry('200x130')
w.bind("<Key>", turtlemouv)
t=Label (w,text="0", font="Arial 35")
t.pack()
w.mainloop()
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Необходимо сделать простую программу, которая считает нажатия на клавиатуру.
Python:
import tkinter as tk
import keyboard


def count_keypress():
    global count
    count += 1
    label.config(text="Количество нажатий: " + str(count))


count = 0
root = tk.Tk()
root.title("Счетчик нажатий на клавиатуре")
label = tk.Label(root, text="Количество нажатий: 0", font=("Arial", 24))
label.pack(padx=20, pady=20)
keyboard.on_press(lambda event: count_keypress())
root.mainloop()
Дополнительная проблема - каждый раз счетчик считает заново. А надо, чтобы считал нарастающим итогом.
т.е. при повторном запуске скрипта начинать отчет со значения, которое было в момент последней остановки?
 
  • Мне нравится
Реакции: _Novichok_

_Novichok_

Новичок
Пользователь
Июн 24, 2023
4
0
1
т.е. при повторном запуске скрипта начинать отчет со значения, которое было в момент последней остановки?
Да, совершенно верно. То есть, запустили программу в понедельник и она работает до самого конца. До поломки компьютера.

Спасибо за ответ!
Правда, пока еще не очень понял внесенных правок, но буду разбираться. Я по образованию не программист :)

Понимаю, что надо делать что-то при помощи f = open('text.txt', 'r'), но разобраться категорически не получается. Ошибки при запуске(
 
Последнее редактирование:

_Novichok_

Новичок
Пользователь
Июн 24, 2023
4
0
1
Немножко допилил код. Теперь число записывается в блокнот. Теперь надо, чтобы при новом открытии бралось записываемое число. Так понимаю, надо делать через if else с включением count > 0
Python:
import tkinter as tk
import keyboard


def count_keypress():
    global count
    count += 1
    label.config(text="Количество нажатий: " + str(count))
    f = open('schet.txt','w')  # открытие в режиме записи
    f.write(str(count))  # запись получившегося числа в файл
    f.close()  # закрытие файла

count = 0
root = tk.Tk()
root.title("Счетчик нажатий на клавиатуре")
label = tk.Label(root, text="Количество нажатий: 0", font=("Arial", 24))
label.pack(padx=20, pady=20)
keyboard.on_press(lambda event: count_keypress())
root.mainloop()
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Теперь надо, чтобы при новом открытии бралось записываемое число.
Python:
import tkinter as tk
import keyboard


def count_keypress():
    global count
    count += 1
    label.config(text=f"Количество нажатий: {count}")


def save_count():
    with open('count.txt', 'w') as file:
        file.write(str(count))
    root.destroy()


try:
    with open('count.txt', 'r') as file:
        count = int(file.read())
except FileNotFoundError:
    count = 0

root = tk.Tk()
root.title("Счетчик нажатий на клавиатуре")
label = tk.Label(root, text=f"Количество нажатий: {count}", font=("Arial", 24))
label.pack(padx=20, pady=20)
keyboard.on_press(lambda event: count_keypress())
root.wm_protocol("WM_DELETE_WINDOW", save_count)

try:
    root.mainloop()
except KeyboardInterrupt:
    save_count()
 
  • Мне нравится
Реакции: _Novichok_

_Novichok_

Новичок
Пользователь
Июн 24, 2023
4
0
1
Python:
Код:
import tkinter as tk
import keyboard
4olshoy_blen, ааааа!!!!!!!!!!
Спасибо большое))) То, что надо! Я в полном восторге.
Признаю, до такого я бы не додумался сам. Ряд решений (try, except) вообще мне оказались незнакомы.
Вы для меня авторитет!(y)
 

Форум IT Специалистов