在pygame窗口中创建工具栏

2 投票
1 回答
2723 浏览
提问于 2025-04-18 14:52

如何在pygame中创建一个工具栏?我做了一些初步的搜索,了解到了一些信息,具体可以参考这个链接:http://en.flossmanuals.net/make-your-own-sugar-activities/making-activities-using-pygame/。不过,我发现gi.repository在Windows上无法使用,而我现在正是在Windows上工作。有没有其他的Python库可以在Windows上使用,这样我就可以添加工具栏了?其实我是在开发一个图形用户界面(简单来说,就是在pygame窗口中让文件夹里的图片向右滚动,并且实现了平移和缩放的功能)。我只想在这个pygame窗口里加一个“工具栏”,并且里面有两个按钮,用来暂停和开始滚动。

1 个回答

4

根据评论的内容(也就是说,你需要自己在pygame中实现),我现在没什么更好的事情可做,所以我来给你简单讲讲怎么做。

首先,你可以把工具栏定义成一个类,这样就能把它放在窗口的顶部,并让它处理按钮的相关操作:

class Toolbar:
    def __init__(self, width, height): #And other customisation options
        self.image = pygame.Surface(width, height)
        self.image.fill(colour)
        self.rect = self.image.get_rect()
        self.rect.topleft = (0,0)
        self.leftbutton = ButtonClass(args)
        self.rightbutton = ButtonClass(args)

    def update(self):
        self.leftbutton.hover() #to animate an effect if the mouse hovers over
        self.rightbutton.hover()

    def draw(self, screen):
        screen.blit(self.image, self.rect)
        screen.blit(self.leftbutton.draw(), self.leftbutton.getRect())
        screen.blit(self.rightbutton.draw(), self.rightbutton.getRect())

    def click(pos):
        if self.leftbutton.getRect().collidepoint(pos):
            self.leftbutton.click()

        if self.rightbutton.getRect().collidepoint(pos):
            self.rightbutton.click()

这需要你自己制作一个按钮类,不过你也可以去我网站上看看相关模块(这正是我想要的方法调用) http://tarqnet.sytes.net/projects/project-Pygame.html

接下来,在你的主循环中实例化(创建)这个工具栏,并进行处理:

toolbar = Toolbar(screen_width, 80)

while True:
    toolbar.update()
    toolbar.draw(screen)

    #Other stuff
    ## Events:
    ## on left click call toolbar.click(pos) 

撰写回答