[英]Confused at why PyGame display's a black screen
所以在我決定問這個問題之前,我做了一些研究,看看我的問題是什么,並遇到了這個問題: 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()**
現在是一個),但是就像我之前說的那樣,當我運行代碼時,我得到了一個黑屏。 但出於某種原因,鼠標坐標跟蹤器仍然有效。 任何幫助是極大的贊賞。
問題是您的代碼組織。
您有樹時間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()
-在程序末尾使用一個屏幕。
現在,我可以看到帶有“你好”的窗格
好的,現在我已經解決了我的問題。 (啊哈新手錯誤)。 因此,在class Pane()
的__init__(self)
區域中,添加了self.Screen.fill((white))
,使其看起來像這樣:
def __init__(self):
self.Screen = pygame.display.set_mode((1000,600), 0, 32)
self.font = pygame.font.SysFont('Arial', 25)
self.Screen.fill((white))
我不確定這是否是解決問題的最佳方法,但它是否有效。 這樣很好。 但是,如果您認為這不是解決問題的好方法,那么一定要教我一種更好的解決問題的方法。
我也有同樣的問題但是我只用過一次,沒有破壞窗戶😳
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.