Meine erste Klasse für die GUI soll ein PopUpMenu sein. Also ein Menü, welches z.B.: beim drücken der rechten Maustaste erscheint, irgendetwas stimmt jedoch nicht. Denn ich sehe denn Text nicht.
Hier die Klasse "PopUpMenu":
Code: Alles auswählen
import pygame, pygame.mouse
from pygame.locals import *
from message import *
class PopUpMenu():
x = 0
y = 0
__width = 0
backcolor = (192,192,192)
forcolor = (122,122,122)
def __init__(self, x, y):
self.x = x
self.y = y
self.__width = 220
self.__entry = list()
self.font = pygame.font.Font(None, 12)
self.linesize = self.font.get_linesize()
def render(self, screen):
x = self.x
y = self.y
box = pygame.rect.Rect(x, y, self.__width, (self.linesize+4) * len(self.__entry) + 4)
# Zuerst zeichne den Hintergrund
pygame.draw.rect(screen, self.backcolor, box)
# Dann zeichne den Rahmen
pygame.draw.rect(screen, self.forcolor, box, 1)
# Und nun den Text auf eine Surface schreiben.
for entry in self.__entry:
text = self.font.render(entry[1], 0, self.forcolor)
text.blit(screen, (x+2,y+3))
y = y + self.linesize + 4
def addEntry(self, entry_id, text, icon=None):
self.__entry.append((entry_id, text, icon))
# Bei jedem hinzufügen eines Textes, wird geprüft ob der neu Text größer ist, als
# der bissher breiteste Text. Sollte dies der Fall sein, so wird das graue
# Hintergrundfeld des PopUpMenus vergroessert.
(text_width, text_height) = self.font.size(text)
if self.__width < text_width + 6:
self.__width = text_width + 6
Code: Alles auswählen
menu = PopUpMenu(10,20)
menu.addEntry(1,"Hallo Welt!")
menu.addEntry(2, "Und tschuess!")
menu.render(screen)
Ist übrigens mein erstes größeres Python Programm, also seit bitte milde zu mir, sollte ich irgendeinen Mist gedreht haben.
Ich hoffe ihr findet meinen Fehler.
Danke,
Cruzer
Nachtrag:
Auf dem oben erwöhnten Screenshot sieht man ausserdem das Ergebnis dieser Klasse. (Am linken oberen Eck des Screenshots) Es ist eine leere graue Box.