【问题标题】:How to execute code with keypress in python 2.7?如何在 python 2.7 中使用按键执行代码?
【发布时间】:2014-09-03 06:24:49
【问题描述】:

有谁知道我如何在 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?

【问题讨论】:

  • 对于所有系统中可用的密钥,您必须在系统中注册此密钥或直接从系统读取密钥 - 这取决于系统
  • 在 Python 中寻找一些键盘记录器 - 它知道如何抓住按下的键。

标签: python user-interface keypress


【解决方案1】:

您可以使用最小化的 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!'

【讨论】:

  • 但是如果最小化窗口失去焦点怎么办?
  • 我只能说 - 这种方法在 Linux 上不起作用:/
  • :) 一切都取决于系统 :)
【解决方案2】:

我认为重复的问题,答案在这里:Python read a single character from the user

这个想法是使用 os 库来实现 getch() 函数,如果你用 C 语言编写的话。

【讨论】:

    【解决方案3】:

    见:Set global hotkey with Python 2.6

    如果您使用 Windows,您可能可以使用 pyHook

    如果你使用 Linux,或者pyKeylogger 中使用的一些方法。

    您似乎使用 wxPython,请参阅RegisterHotKey in wxWindows

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-20
      • 2018-11-11
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2022-11-04
      • 2018-01-12
      相关资源
      最近更新 更多