如何在Python中制作多线程程序

时间:2018-06-24 05:22:15

标签: python python-3.x

我正在使用Python 3.5,并且想要创建多击功能。

我的意思是,我想创建一个注意到Ctrl + S和Q的函数。

但是我的程序没有注意到它。

这是我的代码:

import threading, pygame, sys
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():
    while True:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if pygame.key.get_mods() & pygame.KMOD_CTRL and event.key == pygame.K_s:
                    print('GOOD')

def foreground():
    while True:
        for event in pygame.event.get():
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_q:
                    print('HELLO_WORLD')
            if event.type == QUIT:
                pygame.quit()
                sys.exit()

b = threading.Thread(name='background', target=background)

b.start()
foreground()

1 个答案:

答案 0 :(得分:0)

通过调用b.start(),您可以使程序进入监听Ctrl + S事件的无限循环。一旦在background线程中获得了组合键事件,就不会释放回事件队列中。并且foreground函数将无法捕获和处理它。

如果您希望程序能够处理不同的组合键。您应该让一个功能侦听按键事件,然后将事件分派给不同的处理功能。