我有一个pygame脚本,它以白屏启动,然后在用户键入内容时转换为黑屏。用户输入由另一个线程处理,我使用queue.Queue将消息从输入线程传递到PyGame线程。

问题是,每当我运行脚本时,pygame窗口都会在一段时间后冻结。如果我快速输入某些内容,屏幕将从白色变为黑色,但窗口仍然冻结。我不确定脚本在哪里卡住了?

import pygame
import threading 
import queue

q = queue.Queue()

pygame.init()

#rgb codes 
black = (0, 0, 0)
white = (255, 255, 255)

game_display = pygame.display.set_mode((800, 800))

def screen_1():

    crashed = False

    #holds messages from input thread
    msg = ''

    game_display.fill(white)

    while not crashed:

        #check if there are any messages in the queue
        try:
            msg = q.get(False)
        except queue.Empty:
            pass

        if msg:
            return screen_2()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                crashed = True        

        pygame.display.update()

def screen_2():

    crashed = False

    game_display.fill(black)

    while not crashed:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                crashed = True

        pygame.display.update()        

def inputFunc():
    msg = input('Type something:\n')
    q.put(msg)

t1 = threading.Thread(target = screen_1)
t2 = threading.Thread(target = inputFunc)

t1.start()
t2.start()

转载请注明出处:http://www.zhongtian365.com/article/20230521/1334333.html

随机推荐

  1. PyGame不会将图像加载到窗口并立即崩溃

    所以我用python和pygame做了一个游戏,我有一些资源作为角色。我把所有代码都写对了。但当我运行该程序时,没有任何图像显示,并且窗口立即崩溃。import pygame import os import random WIDTH, ...

  2. Pygame窗口无法打开

    我现在正在学习Python速成课程第二版a。我被困在第12章,从pygame开始。这是代码(取自书中,所以应该是有效的)。我在mac上使用VSC。import sys import pygame class AlienInvasion:...

  3. PyGame在退出之前一直绘制空白窗口

    下面是我的代码:import pygame pygame.init() screen = pygame.display.set_mode((200,200)) clock = pygame.time.Clock() while True: ...

  4. Pygame音频在窗口切换时停止?

    我使用Pygame和Pydub用Python编写了一个音乐播放器(我使用Pygame实际播放音乐,而Pydub可能与这个问题无关)。即使在切换窗口时,音乐也能正常工作,除非我切换到另一个Pygame窗口。我认为如果我编译它(Cx_freez...

  5. Pygame :当我移动窗口时游戏会暂时停止

    我是PyGame的新手,我在做一个游戏。直到我发现,例如,当你将窗口移到桌面的另一个位置时,游戏会暂时停止。但是当我使用pygame.time.get_ticks()时,游戏的节拍仍然在运行。所以我用必要的代码做了一个全新的程序,它做了同样...

  6. 有没有办法在pygame中创建窗口全屏模式?

    我希望窗口是我的分辨率,但仍然有顶部的栏出现。就像最大化窗口一样。这就是我到目前为止所拥有的。os.environ[SDL_VIDEO_CENTERED] = 1 display_info = pygame.display.Info() s...

  7. 如何冻结pygame窗口?

    当我想冻结我的pygame窗口几秒钟时,我通常使用time.sleep()。但是,如果我不小心按下键盘上的任意键,它会在超时后检测到该键。有没有办法冻结我的pygame窗口,这样代码就不会认为按下了键?

  8. Pygame窗口是黑色的

    我正在写一个简单的mandelbrot渲染器。在程序计算并绘制所有内容后,它会保存曲面并对其进行blits。这很好用,但是在我添加了更新显示功能后,它只显示一个黑屏。我将需要更新每次迭代,因为我将添加一些文本和其他内容。我只包含了程序的重要...

  9. 如果我在pygame的主窗口上blit我的图像,它将不会像预期的那样显示

    我目前正在尝试使用pygame库来开发我的第一个简单的独立python游戏。最近,我开始编写一个地图编辑器。一切正常,除了如果我想要显示地图,我得到了某种缩放或“压缩”的图像(见图片) It looks like this,但它看起来应该像...

  10. 为什么在pygame窗口中除了背景之外什么都不显示?

    这是代码。我有两个图像正确命名在同一个文件夹中,所以这不是问题。按钮的runner.png和矩形都不会显示,但背景会显示。class gamewindow(): def __init__(self): pygame....