首页 > 解决方案 > 在付费游戏中将 sqlite 数据库显示为表格

问题描述

我正在尝试将基本的 SQLite 数据库显示为 pygame 中的表。它保存玩家的用户名和分数。我现在拥有的代码显示它,但它不能很好地对齐。编码:

def leader_board():
    i = 35
    messg = font_style.render(f'PLAYER                  SCORE', True, yellow)
    dis.blit(messg, [dis_width / 5, (700 / 4) + 5])
    cur.execute('SELECT * FROM snake_score ORDER BY score desc LIMIT 10')

    rows = cur.fetchall()
    for row in rows:
        mesgg = font_style.render('{:>3} {:30}'.format(row[0], row[1]), True, yellow)
        dis.blit(mesgg, [dis_width / 5, (700 / 4) + i + 5])
        i += 35

这是我从中得到的结果: 在此处输入图像描述

我希望这些数字都与“分数”这个词的结尾对齐。任何帮助将不胜感激,因为我尝试了一些事情,但似乎没有任何工作。

标签: pythonsqlitepygame

解决方案


要么使用等宽字体,要么分别渲染每一列的文本:

def leader_board():
    i = 35
    column_space = 400

    head1 = font_style.render(f'PLAYER', True, yellow)
    head2 = font_style.render(f'SCORE', True, yellow)
    dis.blit(head1, [dis_width / 5, (700 / 4) + 5])
    dis.blit(head2, [dis_width / 5 + column_space, (700 / 4) + 5])
    
    cur.execute('SELECT * FROM snake_score ORDER BY score desc LIMIT 10')
    rows = cur.fetchall()
    for row in rows:
        
        column1 = font_style.render('{:>3}'.format(row[0]), True, yellow)
        column2 = font_style.render('{:30}'.format(row[1]), True, yellow)
        dis.blit(column1, [dis_width / 5, (700 / 4) + i + 5])
        dis.blit(column2, [dis_width / 5 + column_space, (700 / 4) + i + 5])

        i += 35

推荐阅读