我正在制作一个pyGame程序,并决定使用pyGame菜单库中的一些简单的gui来设置菜单.我能找到的每一个例子都使用菜单作为整个程序,这使得很难弄清楚如何将菜单添加到pyGame程序中.
每次运行以下代码时,我都会收到一个错误:
import pygame
import pygame_menu
pygame.init()
clock = pygame.time.Clock()
scrn_size = pygame.display.Info()
scrn = pygame.display.set_mode((scrn_size.current_w, scrn_size.current_h), pygame.FULLSCREEN)
rotation_menu = pygame_menu.Menu(
'Rotation',
1000, 800,
onclose=pygame_menu.events.BACK
)
speed_values_discrete = {0: 'Stopped', 2: '', 5: '', 10: '', 20: '', 30: 'Fastest'}
rotate_speed_range = rotation_menu.add.range_slider('Speed', 5, list(speed_values_discrete.keys()),
slider_text_value_enabled=False,
value_format=lambda x: speed_values_discrete[x]
)
menu = pygame_menu.Menu(
'Configuration',
1000, 800,
enabled=False,
onclose=pygame_menu.events.CLOSE
)
menu.add.button('Rotation', rotation_menu)
menu.add.button('Colors')
def main():
rotation = 0
rpf = 5
move = False
x, y = 0, 0
pos = (0, 0)
img_size = 300
img = pygame.transform.scale(pygame.image.load('img.png'), (img_size, img_size))
while True:
events = pygame.event.get()
for e in events:
if e.type == pygame.QUIT or (e.type == pygame.KEYDOWN and e.key == pygame.K_q):
pygame.quit()
exit(1)
elif e.type == pygame.MOUSEBUTTONDOWN:
menu.enable()
elif e.type == pygame.MOUSEMOTION and move:
pos = e.pos
x = pos[0] - (img_size / 2)
y = pos[1] - (img_size / 2)
scrn.fill((0, 0, 0))
rotated = pygame.transform.rotate(img, rotation)
rotation += rpf
new_rect = rotated.get_rect(center=img.get_rect(topleft=(x, y)).center)
scrn.blit(rotated, new_rect)
if menu.is_enabled():
menu.update(events)
menu.draw(scrn)
pygame.display.update()
clock.tick(60)
if __name__ == '__main__':
main()
错误:
Traceback (most recent call last):
File "C:\Users\Zer0\Documents\Spinner\main.py", line 80, in <module>
main()
File "C:\Users\Zer0\Documents\Spinner\main.py", line 73, in main
menu.draw(scrn)
File "C:\Users\Zer0\AppData\Local\Programs\Python\Python311\Lib\site-packages\pygame_menu\menu.py", line 2053, in draw
self._current._runtime_errors.throw(self._current._runtime_errors.draw, 'menu is not enabled')
File "C:\Users\Zer0\AppData\Local\Programs\Python\Python311\Lib\site-packages\pygame_menu\menu.py", line 4090, in throw
raise RuntimeError(msg)
Runtime错误: menu is not enabled
程序应该旋转一个图像.单击屏幕时,将打开设置菜单.你可以go 子菜单,如旋转设置和改变这些.我遇到的一个问题是,如何在旋转设置菜单中使用RangeSlider
更改旋转速度变量(rpf
)?(这个问题没有解决)
我遇到的另一个问题是,当我关闭菜单时,我收到上面的错误消息,指出菜单未启用.这很令人困惑,因为该函数必须通过判断来查看它是否被启用,它确实启用了.那么它就会立即出现问题,因为它没有启用!这太令人沮丧了.(此问题已解决)