如何在Python中实现多击键功能
我使用的是Python3.5,我想实现多击键功能。我想制作一个注意到Ctrl+Q的函数,但我的程序没有注意到 这是我的密码:如何在Python中实现多击键功能,python,python-3.x,pygame,Python,Python 3.x,Pygame,我使用的是Python3.5,我想实现多击键功能。我想制作一个注意到Ctrl+Q的函数,但我的程序没有注意到 这是我的密码: import threading, pygame from pygame.locals import * from time import sleep pygame.init() screen = pygame.display.set_mode((1160, 640), 0, 0) screen.fill((255, 255, 255)) pygame.display
import threading, pygame
from pygame.locals import *
from time import sleep
pygame.init()
screen = pygame.display.set_mode((1160, 640), 0, 0)
screen.fill((255, 255, 255))
pygame.display.flip()
def background():
number = 0
while True:
if number < 10:
number = number + 1
print(number)
sleep(1)
else:
print("10 seconds are over!")
break
def foreground():
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.key.get_mods() & pygame.KMOD_CTRL and pygame.K_q:
print('HELLO_WORLD')
b = threading.Thread(name='background', target=background)
f = threading.Thread(name='foreground', target=foreground)
b.start()
f.start()
到
但它没有注意到Ctrl+Q
我该怎么做?这里有一个可能的代码修复程序:
import threading
import pygame
from pygame.locals import *
from time import sleep
import sys
pygame.init()
screen = pygame.display.set_mode((1160, 640), 0, 0)
screen.fill((255, 255, 255))
pygame.display.flip()
def background():
number = 0
while True:
if number < 10:
number = number + 1
print(number)
sleep(1)
else:
print("10 seconds are over!")
break
def foreground():
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if pygame.key.get_mods() & pygame.KMOD_CTRL and event.key == pygame.K_q:
print('HELLO_WORLD')
pygame.display.update()
b = threading.Thread(name='background', target=background)
b.start()
foreground()
导入线程
导入pygame
从pygame.locals导入*
从时间上导入睡眠
导入系统
pygame.init()
screen=pygame.display.set_模式((1160640),0,0)
屏幕填充((255、255、255))
pygame.display.flip()
def background():
数字=0
尽管如此:
如果数字小于10:
数字=数字+1
打印(数字)
睡眠(1)
其他:
打印(“10秒结束!”)
打破
def前台():
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==退出:
pygame.quit()
sys.exit()
elif event.type==pygame.KEYDOWN:
如果pygame.key.get_mods()&pygame.KMOD_CTRL和event.key==pygame.K_q:
打印('HELLO_WORLD')
pygame.display.update()
线程(name='background',target=background)
b、 开始()
前景()
虽然这个问题可能会变得有趣,但你没有提供太多相关信息。ie:全局击键还是小部件的击键?任何特定平台或平台独立。。。但最重要的是,@BPL我编辑了我的问题。没有修复导致问题的bug。问题出在检查按下哪个键的if语句中。@MikeyB你是什么意思?在发布我的答案之前,我已经测试过这个东西,它正在工作,哦,等等,我没有看到你对IF语句的更改。我现在看到两种情况。错误是那一行代码。我会记下我的答案。@BPL我编辑了我的问题。你能回答我的另一个问题吗?@HoseongJeon当然,我可以试一试。但是一定要把新内容放到一个新的线程中,这就是StackOverflow的工作方式。每个线程1个问题
def foreground():
while True:
key = pygame.key.get_pressed()
if key[pygame.key.get_mods() & pygame.KMOD_CTRL and pygame.K_q]:
print('HELLO_WORLD')
import threading
import pygame
from pygame.locals import *
from time import sleep
import sys
pygame.init()
screen = pygame.display.set_mode((1160, 640), 0, 0)
screen.fill((255, 255, 255))
pygame.display.flip()
def background():
number = 0
while True:
if number < 10:
number = number + 1
print(number)
sleep(1)
else:
print("10 seconds are over!")
break
def foreground():
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if pygame.key.get_mods() & pygame.KMOD_CTRL and event.key == pygame.K_q:
print('HELLO_WORLD')
pygame.display.update()
b = threading.Thread(name='background', target=background)
b.start()
foreground()