Python和Pygame的灵感与最佳实践

2 投票
1 回答
696 浏览
提问于 2025-04-18 02:47

抱歉我在这个问题上没有说得很具体,但我不知道还可以问哪里。

我有一个树莓派,打算用它来做一个车载电脑项目。我听说可以用Pygame来写界面。

我对Python和Pygame不太熟悉,但我在PHP、HTML、C#和VB方面有不少经验,特别是在Windows窗体应用程序方面。

在这个项目中,我想在右边做一个菜单,假设有5个“标签”。我该怎么考虑这个问题呢?我应该像用PHP/HTML那样,每个标签页都做一个文件,然后在这里加载头部、背景等内容,并以某种方式链接到每个*.py文件(如果这可能的话)?还是应该更像用JS和ajax,使用一个区域(一个“div”)来根据选中的菜单显示我的页面呢?

我花了一个晚上在这方面摸索,我想我需要做的事情大概是这样的:

//Set up the layout
//Add a surface for Tab 1 (tab1Layout.py)
//Add a surface for Tab 2 (tab2Layout.py) - set invisible
//Add a surface for Tab 3 (tab3Layout.py) - set invisible
//Add a surface for Tab 4 (tab4Layout.py) - set invisible
//Add a surface for Tab 5 (tab5Layout.py) - set invisible

//Add the menu to the right (menu.py)

//Start the pygame loop
//Listen for events in the menu (menuEvents.py)
//Listen for events in tab 1 (tab1Events.py)
//Listen for events in tab 2 (tab2Events.py)
//Listen for events in tab 3 (tab3Events.py)
//Listen for events in tab 4 (tab4Events.py)
//Listen for events in tab 5 (tab5Events.py)

我这样想对吗?

你们知道有什么好的教程或者其他库可以用来做这种事情吗?我不想加载X或类似的东西。

有没有好的教程推荐,或者知道类似的项目,我可以研究一下代码?

1 个回答

1

所以,有点难以确切知道你想要什么。不过我想强调一下简单性,如果你创建这么多文件,肯定会让自己感到困惑,而且会有很多重复的代码。

从我个人制作游戏的角度来看,我的所有界面都是一个类里的方法。虽然有一些实例变量,比如屏幕,但每个方法都包含主要的pygame循环,也就是:

while True:
    for event in pygame.event.get():
        #whatever
        pass

当按下按钮时,可以在你的类中切换到另一个方法。我建议为每个选项卡按钮创建一个类,或者为整个选项卡按钮组创建一个类,这样可以在每个选项卡的方法中更新、绘制到屏幕上并使用。

这和php和html的不同之处在于没有预定义的结构,因为你需要从零开始构建所有这些。如果需要的话,我的网站上有一些代码片段可以用来制作按钮等。这里有一个链接

另外,如果你选择使用单独文件的方法,python的导入功能非常直观,你可以简单地使用:

from tabLayout3 import Layout3

(前提是tabLayout3.py的路径在我的python路径中)

撰写回答