pygame-Window неактивен - PullRequest
       1

pygame-Window неактивен

0 голосов
/ 16 июня 2020

я думаю, несколько дней go, тот же файл работал. Я очень запутался и надеюсь, что кто-то может мне помочь. Вот мой код, игнорируйте имена переменных, если можете, im german:

import pygame

screenbreite = 800
screenhöhe = 500
farbe1 = (220, 220, 220)
farbe2 = (220, 220, 220)
farbe3 = (220, 220, 220)
SCHWARZ = (0, 0, 0)
kastenabstand = 95
kastenlänge = 170
kastenhöhe = 80

Thema = "nichts"

pygame.init()
screen = pygame.display.set_mode((screenbreite, screenhöhe))
schrift = pygame.font.SysFont("Franclin Gothic Demi, Segoe UI", 20)
bernoulliformelkastentext = schrift.render("Bernoulliformel", True, SCHWARZ)
erwartungswertkastentext = schrift.render("Erwartungswert", True, SCHWARZ)
kumuliertkastentext = schrift.render("Kumuliert", True, SCHWARZ)
mausposition = pygame.mouse.get_pos()
pygame.mouse.get_pos
pygame.mouse.set_pos(400, 250)
MAUSTASTE_GEDRÜCKT = pygame.mouse.get_pressed()
clock = pygame.time.Clock()
done = False

def kastentest () :
   x = (mausposition[1])
   y = (mausposition[4])
   xliegtdrauf = False
   yliegtdrauf = False
   xtief = 50
   xhoch = 220
   ytief = 50
   yhoch = 130

   if x > xtief and x < xhoch :
      xliegtdrauf = True
   if y > ytief and y < yhoch :
      yliegtdrauf = True

   if xliegtdrauf == True and yliegtdrauf == True :
      Thema = "bernoulli"

   xliegtdrauf = False


   xtief = 315
   xhoch = 385
   if x > xtief and x < xhoch :
      xliegtdrauf = True

   if xliegtdrauf == True and yliegtdrauf == True :
      Thema = "erwartung"

   xliegtdrauf = False


   xtief = 580
   xhoch = 750
   if x > xtief and x < xhoch :
      xliegtdrauf = True

   if xliegtdrauf == True and yliegtdrauf == True :
      Thema = "kumuliert"

while done == False :
   for event in pygame.event.get() :
      while Thema == "nichts" :
         screen.fill((255, 255, 255))
         pygame.draw.rect(screen, farbe1, pygame.Rect(50, 50, kastenlänge, kastenhöhe)) #Bernoulliformelkasten
         pygame.draw.rect(screen, farbe2, pygame.Rect((kastenabstand+50+kastenlänge), 50, kastenlänge, kastenhöhe)) #Erwartungkasten
         pygame.draw.rect(screen, farbe3, pygame.Rect((2*kastenabstand+50+2*kastenlänge), 50, kastenlänge, kastenhöhe)) #Kumuliertkasten
         screen.blit( bernoulliformelkastentext, (70, 75))
         screen.blit( erwartungswertkastentext, (70+kastenabstand+kastenlänge, 75))
         screen.blit( kumuliertkastentext, (70+2*kastenabstand+25+2*kastenlänge, 75))
         if event.type == pygame.QUIT:
            done = True
      if Thema == "bernoulli" or Thema == "erwartung" or Thema == "kumuliert" :
         screen.fill((255, 0, 0))
   pygame.display.flip()
   clock.tick(30)

И было бы неплохо, если бы кто-нибудь сказал мне, подходит ли это "mausposition [1]" для получения второго символа переменной "mausposition"

1 Ответ

0 голосов
/ 16 июня 2020

Ваша игра l oop испорчена. Это должно выглядеть так:

while not done:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         done = True

   if Thema == "nichts":
      screen.fill((255, 255, 255))
      pygame.draw.rect(screen, farbe1, pygame.Rect(50, 50, kastenlänge, kastenhöhe)) #Bernoulliformelkasten
      pygame.draw.rect(screen, farbe2, pygame.Rect((kastenabstand+50+kastenlänge), 50, kastenlänge, kastenhöhe)) #Erwartungkasten
      pygame.draw.rect(screen, farbe3, pygame.Rect((2*kastenabstand+50+2*kastenlänge), 50, kastenlänge, kastenhöhe)) #Kumuliertkasten
      screen.blit( bernoulliformelkastentext, (70, 75))
      screen.blit( erwartungswertkastentext, (70+kastenabstand+kastenlänge, 75))
      screen.blit( kumuliertkastentext, (70+2*kastenabstand+25+2*kastenlänge, 75))

   if Thema == "bernoulli" or Thema == "erwartung" or Thema == "kumuliert":
      screen.fill((255, 0, 0))

   pygame.display.flip()
   clock.tick(30)

В противном случае ваше приложение навсегда застрянет во вложенном цикле while; и, таким образом, не обрабатывает события, что, в свою очередь, приводит к тому, что ваше окно перестает отвечать на запросы.


И было бы неплохо, если бы кто-нибудь мог сказать мне, подходит ли эта "mausposition [1]" второй символ переменной mausposition

Это не имеет смысла. mausposition будет кортежем целых чисел, так как вы вызвали mausposition = pygame.mouse.get_pos(). Таким образом, mausposition[1] будет координатой y курсора мыши относительно окна во время выполнения строки (в данном случае в начале скрипта). mausposition[4] выдаст IndexError, так как в кортеже всегда будет только 2 элемента: координата x и координата y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...