python - plantillas - poner imagen en django
¿Cómo resuelvo un error de atributo? (1)
Entonces, como dije antes, mi código (o mi proyecto actual en el que estoy trabajando) está plagado de errores. Hasta ahora, al menos, he resuelto una docena de errores o más y, sinceramente, me rindo. Quiero decir, Dios sabe cuántos más hay.
El problema actual que estoy teniendo es un AttributeError que, en mi opinión, es uno de los errores más fáciles de solucionar, pero parece que he pasado para completar el modo spaghetti y no tengo ni idea de cómo solucionar el problema.
{El error en sí:
Traceback (most recent call last):
File "C:/Users/Burak/Desktop/boxtrial.py", line 87, in <module>
myScreen.addPane("1")
File "C:/Users/Burak/Desktop/boxtrial.py", line 67, in addPane
myPane.drawPane()
File "C:/Users/Burak/Desktop/boxtrial.py", line 19, in drawPane
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
AttributeError: ''Pane'' object has no attribute ''Screen''
}
Voy a enumerar el código a continuación, pero me siento como si debería explicar lo que estoy tratando de hacer para que tenga algún tipo de comprensión del código. Básicamente en el ciclo principal llamo a la "Pantalla de clase" que ayuda a crear una pantalla de PyGame que aparece una vez ejecutada. En esa pantalla, intento que aparezcan rectángulos en la pantalla en posiciones fijas (las coordenadas son específicas pero las que uso en el código son solo para fines de prueba). Luego tengo otra clase que se llama "Pane" y esta clase está allí para que pueda dibujar muchas instancias del panel de la clase dentro de la pantalla (si eso tiene sentido).
Si alguien puede ayudarme a deshacerse del error que sería de gran ayuda, pero si crees que esta no es una buena manera de resolver el problema, por favor, sé mi invitado para presentarme o enseñarme una mejor manera de hacerlo la misma cosa.
{El código:
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, textToDisplay, coordinates, screen):
self.textToDisplay = textToDisplay
self.coordinates = coordinates
self.screen = screen
def drawPane(self):
self.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
pygame.draw.rect(self.screen, (black), self.coordinates, 2)
pygame.display.update()
class Screen():
#constants/array(?) outlining the x,y boundaries of each of x10 panes
#Note to self - Remember to change co-ordinate values
NoOfPanes = 0
Panes = []
def __init__(self):
pygame.init()
pygame.display.set_caption(''Box Test'')
self.font = pygame.font.SysFont(''Arial'', 25)
Screen = pygame.display.set_mode((1000,600), 0, 32)
self.screen = Screen
self.screen.fill((white))
pygame.display.update()
def addPane(self, textToDisplay):
paneLocs = [(175, 75, 200, 100),
(0, 0, 200, 100),
(600, 400, 200, 100),
(175, 75, 200, 100),
(175, 75, 200, 100),
(175, 75, 200, 100),
(175, 75, 200, 100),
(175, 75, 200, 100),
(175, 75, 200, 100),
(175, 75, 200, 100)
]
if self.NoOfPanes > 10:
print("Limit Reached")
else:
myPane = Pane(textToDisplay, paneLocs[self.NoOfPanes], Screen)
myPane.drawPane()
self.NoOfPanes = self.NoOfPanes + 1
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__'':
myScreen = Screen()
myScreen.addPane("1")
myScreen.addPane("2")
myScreen.addPane("3")
myScreen.addPane("4")
while True:
ev = pygame.event.get()
for event in ev:
if event.type == pygame.MOUSEBUTTONUP:
posx,posy = pygame.mouse.get_pos()
if (posx >= 175 and posx <= 375) and (posy >= 75 and posy <= 175):
print("BOB") #Bob was there just for test purposes
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit(); sys.exit();
Arregla tu caso
class Pane():
def __init__(self, textToDisplay, coordinates, screen):
...
self.screen = screen
def drawPane(self):
self.Screen.... # <<< HERE