所以我有下面的按钮功能,如下所示(pygame):
button("Play", 50, 500, 100, 50, RED, LIGHT_RED, action = "Play")
我将它用于主菜单,它工作得很好,但是在可点击的矩形上的文字我想要的还有几个按钮,它们也是可点击的图像。我尝试将button()中的第一个参数更改为filename并在函数调用中插入文件的名称,但我得到一个'参数必须是字节或unicode'错误。我有什么想法可以改变这个函数来创建一个类似的imageButton()函数吗?
def text_to_button(msg, color, buttonx, buttony, buttonwidth, buttonheight, size = "small"):
textSurf, textRect = text_objects(msg,color,size)
textRect.center = ((buttonx+(buttonwidth/2)), buttony+(buttonheight/2))
PLAYSURF.blit(textSurf, textRect)
def message_to_screen(msg, color, y_displace = 0, size = "small"):
textSurf, textRect = text_objects(msg, color, size)
textRect.center = (WIDTH / 2), (HEIGHT / 2) + y_displace
PLAYSURF.blit(textSurf, textRect)
def text_objects(text,color,size):
if size == "small":
textSurface = smallfont.render(text, True, color)
elif size == "medium":
textSurface = medfont.render(text, True, color)
elif size == "large":
textSurface = largefont.render(text, True, color)
return textSurface, textSurface.get_rect()
def button(text, x, y, width, height, inactive_color, active_color, action = None):
cur = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if x + width > cur[0] > x and y + height > cur[1] > y:
pygame.draw.rect(PLAYSURF, active_color, (x, y, width, height))
if click[0] == 1 and action != None:
if action == "Quit":
pygame.quit()
quit()
if action == "Play":
main()
if action == "Settings":
pass
if action == "Shop":
pass
if action == "Pause":
pause()
else:
pygame.draw.rect(PLAYSURF, inactive_color, (x, y, width, height))
text_to_button(text, BLACK, x, y, width, height)
感谢。
答案 0 :(得分:1)
这更适合评论,但我不能写一个,我写的是答案。
我使用另一个模块" pygbutton"按钮。这个模块完成了你想要做的事情。 link处的按钮类有一个源代码 。只使用该模块会很有帮助,或者查看代码可以帮助您创建自己的模块。