Как да изпълним код с натискане на клавиш в python 2.7?

някой знае ли как мога да изпълня код чрез натискане на клавиш в python 2.7? Мисля си, че може би трябва да направя невидим прозорец и при натискане на клавиш да изпълнява код, който мога да имам под функция? някой знае ли как мога да го постигна?

Опитвам се да направя нещо, което прави екранни снимки и имам това, но искам да е при натискане на клавиш вместо всеки път, когато стартирате програмата.

import wx
import random
import getpass
from time import gmtime, strftime
Time = strftime("%Y-%m-%d %H:%M:%S", gmtime())
User = getpass.getuser()
app= wx.App()
screen = wx.ScreenDC()
size = screen.GetSize()
bmp = wx.EmptyBitmap(size[0], size[1])
mem = wx.MemoryDC(bmp)
mem.Blit(0, 0, size[0], size[1], screen, 0, 0)
del mem  # Release bitmap
Time = Time.replace(':','-')
Name = Time + '.png'
Name = Name.replace(' ', '%20')
bmp.SaveFile(Name, wx.BITMAP_TYPE_PNG)

Мога ли все пак да накарам това да активира underkeypress?


person user3651193    schedule 12.07.2014    source източник
comment
За наличен ключ във всички системи ще трябва да регистрирате този ключ в системата или да прочетете ключовете директно от системата - и това зависи от системата   -  person furas    schedule 13.07.2014
comment
Потърсете някакъв keylogger в Python - той знае как да хване натиснат клавиш.   -  person furas    schedule 13.07.2014


Отговори (3)


Можете да използвате минимизиран прозорец на pygame, за да получите натисканията на клавиши:

import pygame, sys
from pygame.locals import *
pygame.init()

windowSurface = pygame.display.set_mode((1, 1))

pygame.display.iconify()

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    if pygame.key.get_pressed()[pygame.K_UP]:
        #DO something if the player hits the UP arrow key
        print 'up!'
person ZenOfPython    schedule 12.07.2014
comment
Но какво ще стане, ако минимизираният прозорец загуби фокус? - person furas; 13.07.2014
comment
Мога да кажа само - този метод не работи на Linux :/ - person furas; 13.07.2014
comment
:) всичко зависи от системата :) - person furas; 13.07.2014

Мисля, че има дублиран въпрос, отговорът е тук: Python прочете един знак от потребител

Идеята е да използвате библиотеката os, за да реализирате функцията getch(), която бихте използвали, ако пишете на C.

person chris    schedule 12.07.2014

Вижте: Задаване на глобална бърза клавишна комбинация с Python 2.6

Вероятно можете да използвате pyHook, ако използвате Windows.

Или някакъв метод, използван в pyKeylogger, ако използвате Linux.

Изглежда, че използвате wxPython, така че вижте RegisterHotKey в wxWindows

person furas    schedule 12.07.2014