Pygame'DIsplay mode not set'?
Pygame 'DIsplay mode not set'?
我(尝试)创建一个游戏菜单并将我的 GameLoop 放在 Class = Menü 中。当我尝试启动代码时,它会突出显示行 pygame.display.update()
并告诉我:Display mode not set.
Class Menü(Highscore):
def __init__(self):
Highscore.__init__(self)
#Fenster erstellen
self.fenster_height = 1000 # Fensterhöhe definieren
self.fenster_width = 600 # Fensterbreite definieren
self.screen = pygame.display.set_mode((self.fenster_height, self.fenster_width))
self.run = True
#self.start_img = self.image.load('pong_test.png').convert_alpha() # Bild für start_img ausw#hlen
#self.quit_img = self.image.load('pong_test.png').convert_alpha()
#self.auslesen = Highscore.readHS()
pygame.display.set_caption('Spielekiste')
#pygame.start_img = pygame.image.load('pong_test.png').convert_alpha()
#pygame.quit_img = pygame.image.load('pong_test.png').convert_alpha()
#self.screen.fill((96, 144, 189)) # Screen mit Farbe (255,255,255) füllen
def runMenü(self):
while True: # Während "run = TRUE"
for event in pygame.event.get():
# fenster schließen
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.MOUSEBUTTONDOWN:
print('test')
pygame.display.update() # Fenster wird aktualisiert
menu = Menü
menu.runMenü(menu)
首先,为了在 python 中创建一个 class,我们使用了 class
关键字,而在您的代码中,您使用了 Class
这个词,这将引发错误,因为它不是 python.
中的关键字
所以将这一行:Class Menü(Highscore):
替换为这一行:class Menü(Highscore):
现在要解决您的问题,请参阅 this answer。基本上,有两种方法可以防止出现错误:
第一种方式
run = True
while run: # Während "run = TRUE"
for event in pygame.event.get():
# fenster schließen
if event.type == pygame.QUIT:
run = False
if event.type == pygame.MOUSEBUTTONDOWN:
print('test')
pygame.display.update() # Fenster wird aktualisiert
pygame.quit()
在您当前的游戏循环中(runMenü
函数内的 while
循环),当 pygame.QUIT
事件被触发时,您会立即退出程序而不停止您的游戏循环。因此,如果您将 runMenü
函数中的代码替换为我编写的代码,您将不会收到错误。
第二种方式
while True: # Während "run = TRUE"
for event in pygame.event.get():
# fenster schließen
if event.type == pygame.QUIT:
pygame.quit()
sys.exit(0)
if event.type == pygame.MOUSEBUTTONDOWN:
print('test')
pygame.display.update() # Fenster wird aktualisiert
在这里,我在使用pygame.quit()
退出pygame后退出程序。这样,您的程序就不会抛出错误,因为我用 sys.exit(0)
终止了它。不要忘记在代码顶部添加 import sys
(在 import pygame
下)。
我个人会使用第一种方法,因为它停止循环然后终止程序,我认为这种方法更好。
修改后的代码:
import pygame
pygame.init()
class Menü(Highscore):
def __init__(self):
Highscore.__init__(self)
#Fenster erstellen
self.fenster_height = 1000 # Fensterhöhe definieren
self.fenster_width = 600 # Fensterbreite definieren
self.screen = pygame.display.set_mode((self.fenster_height, self.fenster_width))
self.run = True
#self.start_img = self.image.load('pong_test.png').convert_alpha() # Bild für start_img ausw#hlen
#self.quit_img = self.image.load('pong_test.png').convert_alpha()
#self.auslesen = Highscore.readHS()
pygame.display.set_caption('Spielekiste')
#pygame.start_img = pygame.image.load('pong_test.png').convert_alpha()
#pygame.quit_img = pygame.image.load('pong_test.png').convert_alpha()
#self.screen.fill((96, 144, 189)) # Screen mit Farbe (255,255,255) füllen
def runMenü(self):
run = True
while run: # Während "run = TRUE"
for event in pygame.event.get():
# fenster schließen
if event.type == pygame.QUIT:
run = False
if event.type == pygame.MOUSEBUTTONDOWN:
print('test')
pygame.display.update() # Fenster wird aktualisiert
pygame.quit()
menu = Menü()
menu.runMenü()
我(尝试)创建一个游戏菜单并将我的 GameLoop 放在 Class = Menü 中。当我尝试启动代码时,它会突出显示行 pygame.display.update()
并告诉我:Display mode not set.
Class Menü(Highscore):
def __init__(self):
Highscore.__init__(self)
#Fenster erstellen
self.fenster_height = 1000 # Fensterhöhe definieren
self.fenster_width = 600 # Fensterbreite definieren
self.screen = pygame.display.set_mode((self.fenster_height, self.fenster_width))
self.run = True
#self.start_img = self.image.load('pong_test.png').convert_alpha() # Bild für start_img ausw#hlen
#self.quit_img = self.image.load('pong_test.png').convert_alpha()
#self.auslesen = Highscore.readHS()
pygame.display.set_caption('Spielekiste')
#pygame.start_img = pygame.image.load('pong_test.png').convert_alpha()
#pygame.quit_img = pygame.image.load('pong_test.png').convert_alpha()
#self.screen.fill((96, 144, 189)) # Screen mit Farbe (255,255,255) füllen
def runMenü(self):
while True: # Während "run = TRUE"
for event in pygame.event.get():
# fenster schließen
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.MOUSEBUTTONDOWN:
print('test')
pygame.display.update() # Fenster wird aktualisiert
menu = Menü
menu.runMenü(menu)
首先,为了在 python 中创建一个 class,我们使用了 class
关键字,而在您的代码中,您使用了 Class
这个词,这将引发错误,因为它不是 python.
所以将这一行:Class Menü(Highscore):
替换为这一行:class Menü(Highscore):
现在要解决您的问题,请参阅 this answer。基本上,有两种方法可以防止出现错误:
第一种方式
run = True
while run: # Während "run = TRUE"
for event in pygame.event.get():
# fenster schließen
if event.type == pygame.QUIT:
run = False
if event.type == pygame.MOUSEBUTTONDOWN:
print('test')
pygame.display.update() # Fenster wird aktualisiert
pygame.quit()
在您当前的游戏循环中(runMenü
函数内的 while
循环),当 pygame.QUIT
事件被触发时,您会立即退出程序而不停止您的游戏循环。因此,如果您将 runMenü
函数中的代码替换为我编写的代码,您将不会收到错误。
第二种方式
while True: # Während "run = TRUE"
for event in pygame.event.get():
# fenster schließen
if event.type == pygame.QUIT:
pygame.quit()
sys.exit(0)
if event.type == pygame.MOUSEBUTTONDOWN:
print('test')
pygame.display.update() # Fenster wird aktualisiert
在这里,我在使用pygame.quit()
退出pygame后退出程序。这样,您的程序就不会抛出错误,因为我用 sys.exit(0)
终止了它。不要忘记在代码顶部添加 import sys
(在 import pygame
下)。
我个人会使用第一种方法,因为它停止循环然后终止程序,我认为这种方法更好。
修改后的代码:
import pygame
pygame.init()
class Menü(Highscore):
def __init__(self):
Highscore.__init__(self)
#Fenster erstellen
self.fenster_height = 1000 # Fensterhöhe definieren
self.fenster_width = 600 # Fensterbreite definieren
self.screen = pygame.display.set_mode((self.fenster_height, self.fenster_width))
self.run = True
#self.start_img = self.image.load('pong_test.png').convert_alpha() # Bild für start_img ausw#hlen
#self.quit_img = self.image.load('pong_test.png').convert_alpha()
#self.auslesen = Highscore.readHS()
pygame.display.set_caption('Spielekiste')
#pygame.start_img = pygame.image.load('pong_test.png').convert_alpha()
#pygame.quit_img = pygame.image.load('pong_test.png').convert_alpha()
#self.screen.fill((96, 144, 189)) # Screen mit Farbe (255,255,255) füllen
def runMenü(self):
run = True
while run: # Während "run = TRUE"
for event in pygame.event.get():
# fenster schließen
if event.type == pygame.QUIT:
run = False
if event.type == pygame.MOUSEBUTTONDOWN:
print('test')
pygame.display.update() # Fenster wird aktualisiert
pygame.quit()
menu = Menü()
menu.runMenü()