Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在pygame中的屏幕上呈现文本_Python_User Interface_Pygame_Python 3.7_Backtracking - Fatal编程技术网

Python 无法在pygame中的屏幕上呈现文本

Python 无法在pygame中的屏幕上呈现文本,python,user-interface,pygame,python-3.7,backtracking,Python,User Interface,Pygame,Python 3.7,Backtracking,我正在尝试使用pygame构建一个带有GUI的数独解算器。 我用白色填充屏幕,并为网格绘制矩形,然后翻转屏幕进行更新。 现在我使用board数组绘制网格值,使用以下函数 def on_渲染(自、板): font=pygame.font.font(pygame.font.match_font('nintendoext003'),1) screen=pygame.display.get_surface() 屏幕填充((255、255、255)) 对于范围(9)内的高度: 对于范围(9)内的宽度: r

我正在尝试使用pygame构建一个带有GUI的数独解算器。 我用白色填充屏幕,并为网格绘制矩形,然后翻转屏幕进行更新。 现在我使用board数组绘制网格值,使用以下函数

def on_渲染(自、板):
font=pygame.font.font(pygame.font.match_font('nintendoext003'),1)
screen=pygame.display.get_surface()
屏幕填充((255、255、255))
对于范围(9)内的高度:
对于范围(9)内的宽度:
rect=pygame.rect(宽*70,高*70,68,68)
pygame.draw.rect(屏幕,(0,0,0),rect)
pygame.display.flip()
screen=pygame.display.get_surface()
对于范围(9)内的高度:
对于范围(9)内的宽度:
如果不是板[高度][宽度]==0:
value=font.render(str(board[height][width]),True,(255,255,255))
valrect=value.get_rect()
垂直中心=(宽度*70+34,高度*70+34)
screen.blit(值,valrect)
网格绘制正确,非零元素也被正确读取,但文本根本不会呈现。 由于渲染函数也将在程序求解网格时绘制已求解的网格,因此我希望它能够更新为blit to screen的值。
我做错了什么?

的构造函数的最后一个参数是字体的大小(以像素为单位)。因此1表示1像素。
此外,您必须在绘制文本后更新显示。注意,在绘制整个场景后,只需更新一次显示即可:

使用不同的字体大小(例如40)并更新渲染上
末尾的显示:

渲染板上的def(代码): font=pygame.font.font(pygame.font.match_font('nintendoext003'),40) screen=pygame.display.get_surface() #清晰显示 屏幕填充((255、255、255)) #绘制网格 对于范围(9)内的高度: 对于范围(9)内的宽度: rect=pygame.rect(宽*70,高*70,68,68) pygame.draw.rect(屏幕,(0,0,0),rect) #绘制文本 对于范围(9)内的高度: 对于范围(9)内的宽度: 如果不是板[高度][宽度]==0: value=font.render(str(board[height][width]),True,(255,255,255)) valrect=value.get_rect() 垂直中心=(宽度*70+34,高度*70+34) screen.blit(值,valrect) #更新显示 pygame.display.flip()
奇怪的是,我发誓我在绘制值后尝试过翻转,但没有效果,大多数示例也没有翻转。我从字体大小100开始,一步一步地降低。。。。无论如何谢谢你@Blaine你应该每帧只翻转一次,所以如果这只是一个要绘制的辅助函数,而你在别处调用了
pygame.display.flip()
,那么翻转是不必要的。@TedKleinBergman当然,但我在回答中提到了这一点。