So like I said before my code (Or my current project that I am working on) is riddled with errors. So far I have at least solved a dozen errors or more and honestly I just give up. I mean God knows how many more there are.
The current problem that I am having is an AttributeError which is in my opinion one of the easiest errors to fix however I seem to have gone in to complete spaghetti mode and I have no clue on how to fix the problem.
{The error itself:
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 addPanemyPane.drawPane()File "C:\Users\Burak\Desktop\boxtrial.py", line 19, in drawPaneself.Screen.blit(self.font.render(textToDisplay, True, (black)), (250, 115))
AttributeError: 'Pane' object has no attribute 'Screen'
}
I will list the code below but I feel as if I should explain what I am trying to do so you have some sort of understanding of the code. Basically in the main loop I call upon the "Class Screen" which helps to create a PyGame screen that comes up once run. On that screen I am trying to get rectangles to appear on the screen in fixed positions (The coordinates are specific but the ones I use on the code are just for test purposes). I then have another class that is called "Pane" and this class is there so that I can draw many instances of the class pane within screen (If that makes sense).
If someone can help me get rid of the error that would be of grate help, but if you think that this is not a good way of solving the problem then please be my guest to come up with or teach me of a better way to do the same thing.
{The code:
import pygame
import sys
from pygame.locals import *white = (255,255,255)
black = (0,0,0)
objs = []
MAIN_BUTTON = 1class Pane():def __init__(self, textToDisplay, coordinates, screen):self.textToDisplay = textToDisplayself.coordinates = coordinatesself.screen = screendef 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 valuesNoOfPanes = 0Panes = []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 = Screenself.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 + 1pygame.display.update()def mousePosition(self):global clickPosglobal releasePosfor event in pygame.event.get():if event.type == MAIN_BUTTON:self.Pos = pygame.mouse.get_pos()return MAIN_BUTTONelse:return Falseif __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 purposesfor event in pygame.event.get(): if event.type == pygame.QUIT:pygame.quit(); sys.exit();