我正在用pygame-gui写一个项目。我需要一个类图表,它是一个将填充一些文本、图形等的框。因此我为它创建了一个不同的曲面。在它的子类ClassChart(Chart)中,我放置了一个uitextryline
问题是使用新的管理器(与其表面相关)此入口行不起作用。如果我使用主类(我创建窗口的地方)中的管理器,一切都会正常工作。那么,如何让我的入职线与新经理一起工作,这值得吗?在整个项目中使用同一个经理可以吗
我的主要意见是:
FPS = 60
windowWidth = 900
windowHeight = 900
clock = pygame.time.Clock()
pygame.init()
windowSurface = pygame.display.set_mode((windowWidth, windowHeight))
manager = gui.UIManager((windowWidth, windowHeight))
background = pygame.Surface((windowWidth, windowHeight))
background.fill(Colors.WHITE)
chart = ClassChart(windowSurface, manager, x=100, y=100, name="TEst")
running = True
while running:
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
manager.process_events(event)
windowSurface.blit(background, (0, 0))
chart.draw()
manager.update(FPS)
manager.draw_ui(windowSurface)
pygame.display.update()
clock.tick(FPS)
我的课程图表 (注释行显示如何从main与经理一起工作)
class ClassChart(Chart):
def __init__(self,
parentSurface,
manager,
width=160,
height=200,
boundColor=Colors.BLACK,
x=0, y=0, thickness=2,
name="Class",
backgroundColor=Colors.LIGHT_LIGHT_GREY, ):
super().__init__(parentSurface, width, height, boundColor, x, y, thickness)
self.manager = gui.UIManager((self.width, self.height))
self.name = gui.elements.UITextEntryLine(pygame.Rect((0, 0), (self.width, self.height)), self.manager)
# self.name = gui.elements.UITextEntryLine(pygame.Rect((self.x, self.y), (self.width, self.height)), manager)
self.nameSize = self.height // 10
self.fieldSize = (self.height - self.nameSize) // 2
self.name.set_text(name)
def draw(self):
super(ClassChart, self).draw()
pygame.draw.line(self.surface, self.boundColor, (0, self.nameSize),
(self.width, self.nameSize), self.thickness)
pygame.draw.line(self.surface, self.boundColor, (0, self.nameSize + self.fieldSize),
(self.width, self.nameSize + self.fieldSize), self.thickness)
self.manager.update(60)
self.manager.draw_ui(self.surface)
self.blit()
目前没有回答
相关问题 更多 >
编程相关推荐