gpt4 book ai didi

python - 对为什么 PyGame 显示黑屏感到困惑

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:26 26 4
gpt4 key购买 nike

所以在我决定问这个问题之前,我做了一些研究以了解我的问题是什么并遇到了这个问题:Code Only Produces Black Screen In Pygame Window但是,这并不是那么有用,因为我没有遇到与此人相同的问题。我肯定知道我的 PyGame 没有过时或类似的东西,因为我的代码以前版本可以正常工作。

每次运行代码时,我都会遇到黑屏。

这是我的代码(有点长抱歉):

import pygame
import sys
from pygame.locals import *

white = (255,255,255)
black = (0,0,0)

objs = []

MAIN_BUTTON = 1

class Pane():

def __init__(self):
self.Screen = pygame.display.set_mode((1000,600), 0, 32)
self.font = pygame.font.SysFont('Arial', 25)

def drawPane(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

def drawPane1(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

def drawPane2(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

def drawPane3(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

def drawPane4(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

def drawPane5(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

def drawPane6(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

def drawPane7(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

def drawPane8(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

def drawPane9(self, textToDisplay):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.Screen, (black), (175, 75, 200, 100), 2)

class Screen():

def __init__(self):
pygame.init()
self.font = pygame.font.SysFont('Arial', 25)
pygame.display.set_caption('Box Test')
self.screen = pygame.display.set_mode((1000,600), 0, 32)
self.screen.fill((white))
pygame.display.update()
numberOfPanes = 0
self.NoOfPanes = numberOfPanes

def addPane(self, textToDisplay):
myPane = Pane()
myPane.drawPane(textToDisplay)

def clearScreen(self):
self.screen = pygame.display.set_mode((600,400), 0, 32)
self.screen.fill((white))
pygame.display.update()

def mousePosition(self):
global clickPos
global releasePos
for event in pygame.event.get():
if event.type == MAIN_BUTTON:
self.Pos = pygame.mouse.get_pos()
return MAIN_BUTTON
else:
return False


if __name__ == '__main__':
Pan3 = Screen()
Pan3.addPane("hello")
Pan3.mousePosition()
pygame.display.update()
while True:
ev = pygame.event.get()
for event in ev:
if event.type == pygame.MOUSEBUTTONUP:
posx,posy = pygame.mouse.get_pos()
print(posx)
print(posy)


for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit(); sys.exit();

所以我基本上是在尝试在 **class Screen()** 中显示来自 **class Pane()** 的 Pane (现在是一个)但是就像我之前说的那样,当我运行代码时出现黑屏。但出于某种原因,鼠标坐标跟踪器仍然有效。非常感谢任何帮助。

最佳答案

问题出在您的代码组织上。

你有树时间 pygame.display.set_mode()。每次调用 pygame.display.set_mode() 时,您都会破坏之前的 screen,创建新的 screen 并且新屏幕始终为黑色。

您应该只创建一次screen并将其作为参数发送给其他类。

def addPane(self, textToDisplay):
myPane = Pane(self.screen) # send screen to Pane
myPane.drawPane(textToDisplay)

# ...

class Pane():

def __init__(self, screen):
self.Screen = screen # get screen

并从 clear() 函数中删除 pygame.display.set_mode() - 在程序结束时使用一个屏幕。

现在我可以看到带有“你好”的 Pane

关于python - 对为什么 PyGame 显示黑屏感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19960435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com