Pygame窗口在使用线程时冻结
我有一个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
随机推荐
-
PyGame不会将图像加载到窗口并立即崩溃
所以我用python和pygame做了一个游戏,我有一些资源作为角色。我把所有代码都写对了。但当我运行该程序时,没有任何图像显示,并且窗口立即崩溃。import pygame import os import random WIDTH, ...
-
Pygame窗口无法打开
我现在正在学习Python速成课程第二版a。我被困在第12章,从pygame开始。这是代码(取自书中,所以应该是有效的)。我在mac上使用VSC。import sys import pygame class AlienInvasion:...
-
PyGame在退出之前一直绘制空白窗口
下面是我的代码:import pygame pygame.init() screen = pygame.display.set_mode((200,200)) clock = pygame.time.Clock() while True: ...
-
Pygame音频在窗口切换时停止?
我使用Pygame和Pydub用Python编写了一个音乐播放器(我使用Pygame实际播放音乐,而Pydub可能与这个问题无关)。即使在切换窗口时,音乐也能正常工作,除非我切换到另一个Pygame窗口。我认为如果我编译它(Cx_freez...
-
Pygame :当我移动窗口时游戏会暂时停止
我是PyGame的新手,我在做一个游戏。直到我发现,例如,当你将窗口移到桌面的另一个位置时,游戏会暂时停止。但是当我使用pygame.time.get_ticks()时,游戏的节拍仍然在运行。所以我用必要的代码做了一个全新的程序,它做了同样...
-
有没有办法在pygame中创建窗口全屏模式?
我希望窗口是我的分辨率,但仍然有顶部的栏出现。就像最大化窗口一样。这就是我到目前为止所拥有的。os.environ[SDL_VIDEO_CENTERED] = 1 display_info = pygame.display.Info() s...
-
如何冻结pygame窗口?
当我想冻结我的pygame窗口几秒钟时,我通常使用time.sleep()。但是,如果我不小心按下键盘上的任意键,它会在超时后检测到该键。有没有办法冻结我的pygame窗口,这样代码就不会认为按下了键?
-
Pygame窗口是黑色的
我正在写一个简单的mandelbrot渲染器。在程序计算并绘制所有内容后,它会保存曲面并对其进行blits。这很好用,但是在我添加了更新显示功能后,它只显示一个黑屏。我将需要更新每次迭代,因为我将添加一些文本和其他内容。我只包含了程序的重要...
-
如果我在pygame的主窗口上blit我的图像,它将不会像预期的那样显示
我目前正在尝试使用pygame库来开发我的第一个简单的独立python游戏。最近,我开始编写一个地图编辑器。一切正常,除了如果我想要显示地图,我得到了某种缩放或“压缩”的图像(见图片) It looks like this,但它看起来应该像...
-
为什么在pygame窗口中除了背景之外什么都不显示?
这是代码。我有两个图像正确命名在同一个文件夹中,所以这不是问题。按钮的runner.png和矩形都不会显示,但背景会显示。class gamewindow(): def __init__(self): pygame....