使用 django python 从网页打开 pygame window

Open pygame window from web page with django python

我正在尝试建立一个可以玩游戏的网站。您最终将能够单击一个按钮并启动 pygame window 来玩游戏。为了测试我是否可以使用 Django 执行此操作,我尝试在转到主页时启动 pygame window 作为概念证明。但是,我无法确定如何启动 window.

这是我在 views.py 中的第一次尝试:

from .games import game

def home_page(request):
    title = "Home Page"
    template_name = "home.html"
    if request.user.is_authenticated:
        message = f'Hello there, {request.user}!'
    else:
        message = 'Hello there!'
    game.main()
    return render(request, template_name, {'title': title, 'message': message})

我的 game.py(位于 games 文件夹中,与我的 views.py:

import pygame
import sys

def main():
    pygame.init()

    screen = pygame.display.set_mode((50, 50))
    pygame.display.set_caption("Test")

    while True:
        screen.fill((255, 255, 255))
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        pygame.display.update()

当我 运行 服务器并尝试访问 127.0.0.1:8000(我的站点所在的位置)时,页面和 pygame window 都不会加载。当我退出服务器时,网页显示找不到站点。我认为这是因为代码从未到达我的 views.py.

return render(request, template_name, {'title': title, 'message': message}) 部分

如何打开一个pygamewindow进入首页?

从根本上说,这种方法行不通,因为您 运行 在您的服务器上安装代码,但您希望 pygame window 出现在访问您网站的人。您的代码需要 运行 client-side。您的选择是将所有内容移出 Web 浏览器(即提供文件供用户下载,并让用户 运行 在他自己的机器上玩游戏)或以某种方式使用 JavaScript 作为中介,如 Pyodide 或 Brython。如果您想使用 pygame.

,后一种方法可能不起作用