Python code funktioniert nicht?
Hallo!
Ich arbeite gerade mit PyGame in PyCharm an einem Projekt, jedoch funktioniert bei dem ,,def step_2()" code nur ein print befehl, jedoch kein screen.fill. kann mir jemand erklären wieso?
danke im voraus :)
import pygame
from sys import exit
pygame.init()
middle = (25, 200)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
white = (255, 255, 255)
black = (0, 0, 0)
white_dark = (224, 224, 224)
screen = pygame.display.set_mode((800, 500))
def kick_sound():
pygame.mixer.music.load("venv/kick_sound_1.wav")
pygame.mixer.music.play()
def start_screen():
screen.fill(white)
while True:
font = pygame.font.Font("venv/Fruit Squirting Sans free.ttf", 80)
img = font.render("Welcome to DRUMKIT!", True, blue)
screen.blit(img, (middle))
font_2 = pygame.font.Font("venv/Fruit Squirting Sans free.ttf", 55)
img_2 = font_2.render("press p!", True, white_dark)
screen.blit(img_2, (280, 300))
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_p:
step_2()
if event.type == pygame.QUIT:
pygame.quit()
exit()
pygame.display.update()
def step_2():
pygame.init()
while True:
screen.fill(white)
while True:
start_screen()
1 Antwort
Vom Fragesteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Python
Dein Screen ist in einer Endlosschleife und kann das display nicht updaten. Außerdem ist dein display schon weiß und deswegen kann man keine Veränderung sehen.
Zum fixen kannst du entweder:
def step_2():
pygame.init()
screen.fill(red)
oder:
def step_2():
pygame.init()
while True:
screen.fill(red)
pygame.display.update()
vernwenden, wobei bei der 2. Variante man in einer Endlosschleife feststeckt, welche man mit return oder break rauskommen kann
Woher ich das weiß:eigene Erfahrung