首页 > 解决方案 > 使用 pygame 显示不同样式的项目符号

问题描述

是否有可能使用 pygame 在 Python3 中呈现不同样式的项目符号?我可以使用以下字符' - ',但我宁愿使用圆形项目符号,例如 stackoverflow 使用的那些:

作为一个非常丑陋的解决方法,我目前正在考虑在项目符号所在的位置画一个圆圈,但在我投入努力之前,我想问一下 pygame 是否天生就不可能,或者我是否遗漏了一些东西。

如果你想测试你的解决方案,最少的工作代码:

import pygame
pygame.init()
screen = pygame.display.set_mode((600, 900))
pygame.display.get_surface().fill((200, 200, 200))
# Fonts
pygame.font.init()
my_font = pygame.font.SysFont('Arial', 30)
text_surface = my_font.render('Some Text', False, (0, 0, 0))
text_surface2 = my_font.render('- A bulletpoint text', False, (0, 0, 0))
# Loop
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    screen.blit(text_surface, (10, 0))
    screen.blit(text_surface2, (10, 50))
    pygame.display.flip()

标签: pythonpygame

解决方案


您可以选择下载具有不同类型要点的字体并使用它。一个更简单但有限制的替代方法是直接使用 unicode 作为项目符号点,即u'\u2022',但这会限制您可以使用的项目符号点类型。

import pygame
pygame.init()
screen = pygame.display.set_mode((600, 900))
pygame.display.get_surface().fill((200, 200, 200))
# Fonts
pygame.font.init()
my_font = pygame.font.SysFont('Arial', 30)
text_surface = my_font.render('Some Text', False, (0, 0, 0))
text_surface2 = my_font.render(u'\u2022 BulletPoint' , False, (0, 0, 0))
# Loop
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    screen.blit(text_surface, (10, 0))
    screen.blit(text_surface2, (10, 50))
    pygame.display.flip()

另外,请注意您必须将抗锯齿设置为True,否则它不会形成圆圈。

 my_font.render(u'\u2022 BulletPoint' , True, (0, 0, 0))

推荐阅读