Python 如何更新pygame模块中点击按钮时出现的文本

Python 如何更新pygame模块中点击按钮时出现的文本,python,button,text,pygame,pygame-surface,Python,Button,Text,Pygame,Pygame Surface,我正在做一个代码,点击一个按钮,就会从myList中随机选择一个字符串并显示出来。我正在使用pygame模块进行此操作。这里的问题是文本不会保留,它只会闪烁一帧。 代码如下: import pygame import random pygame.init() size = (500, 400) screen = pygame.display.set_mode(size) pygame.display.set_caption("Project") bg = pygame.im

我正在做一个代码,点击一个按钮,就会从myList中随机选择一个字符串并显示出来。我正在使用pygame模块进行此操作。这里的问题是文本不会保留,它只会闪烁一帧。 代码如下:

import pygame
import random

pygame.init()
size = (500, 400)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Project")
bg = pygame.image.load("bg.jpg")

# declaring variables and lists
white = (255, 255, 255)
black = (0, 0, 0)
light_grey = (224, 224, 224)
dark_grey = (200, 200, 200)

text = pygame.font.SysFont("Agency FB", 20)
myList = ["China", "Italy", "Russia", "India", "USA", "Canada", "France", "Japan", "Brazil", "Egypt"]
# text for button
button_text = text.render("Country", True, black)

rb = random.choice(myList)
font = pygame.font.SysFont("Agency FB", 50)
bFont = font.render(str(rb), True, white)

var = True
while var:
    screen.blit(bg, (0, 0))
    # store mouse position
    mouse = pygame.mouse.get_pos()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            var = False
        # button click
        if event.type == pygame.MOUSEBUTTONDOWN:
            # pick one from list and blit
            if 50 <= mouse[0] <= 50 + 75 and 350 <= mouse[1] <= 350 + 35:
                screen.blit(bFont, (50, 100))
    # make button
    if 50 <= mouse[0] <= 50 + 75 and 350 <= mouse[1] <= 350 + 35:
        pygame.draw.rect(screen, dark_grey, (50, 350, 75, 35), 0)
    else:
        pygame.draw.rect(screen, light_grey, (50, 350, 75, 35), 0)
    screen.blit(button_text, (55, 355))

    pygame.display.update()
导入pygame
随机输入
pygame.init()
大小=(500400)
screen=pygame.display.set_模式(大小)
pygame.display.set_标题(“项目”)
bg=pygame.image.load(“bg.jpg”)
#声明变量和列表
白色=(255,255,255)
黑色=(0,0,0)
浅灰色=(224224224224)
深灰色=(200200200200)
text=pygame.font.SysFont(“代理FB”,20)
myList=[“中国”、“意大利”、“俄罗斯”、“印度”、“美国”、“加拿大”、“法国”、“日本”、“巴西”、“埃及”]
#按钮文本
button_text=text.render(“国家”,真,黑色)
rb=随机选择(myList)
font=pygame.font.SysFont(“代理FB”,50)
bFont=font.render(str(rb),True,白色)
var=True
而var:
屏幕光点(背景,(0,0))
#存储鼠标位置
mouse=pygame.mouse.get_pos()
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
var=False
#按钮点击
如果event.type==pygame.MOUSEBUTTONDOWN:
#从列表中选择一个并单击

如果50尝试使用另一个布尔变量

if event.type == pygame.MOUSEBUTTONDOWN:
            if 50 <= mouse[0] <= 50 + 75 and 350 <= mouse[1] <= 350 + 35:
                show_text = True
if show_text:
        time_check = pygame.time.get_ticks ()
        b_font = font.render (random.choice (my_list), True,(255,255,255))
        screen.blit (b_font, (50, 100)
        if time_check >= 2000:   #2000 miliseconds
               show_text = False
               time_check = 0
如果event.type==pygame.MOUSEBUTTONDOWN:

如果50不在主应用程序循环之前创建
bFont
,而是使用
None
初始化它:

bFont=None
按下按钮时选择并渲染随机字符串:

whilevar:
# [...]
对于pygame.event.get()中的事件:
# [...]
#按钮点击
如果event.type==pygame.MOUSEBUTTONDOWN:
#从列表中选择一个并单击
button_rect=pygame.rect(50350,75,35)
如果按钮直接碰撞点(事件位置):
rb=随机选择(myList)
bFont=font.render(str(rb),True,白色)
如果设置了
bFont
,则在主应用程序循环中绘制文本:

var=True
而var:
# [...]
如果是bFont:
屏幕blit(bFont,(50100))
pygame.display.update()

完整示例:

导入pygame
随机输入
pygame.init()
大小=(500400)
screen=pygame.display.set_模式(大小)
pygame.display.set_标题(“项目”)
bg=pygame.image.load(“bg.jpg”)
#声明变量和列表
白色=(255,255,255)
黑色=(0,0,0)
浅灰色=(224224224224)
深灰色=(200200200200)
text=pygame.font.SysFont(“代理FB”,20)
myList=[“中国”、“意大利”、“俄罗斯”、“印度”、“美国”、“加拿大”、“法国”、“日本”、“巴西”、“埃及”]
#按钮文本
button_text=text.render(“国家”,真,黑色)
button_rect=pygame.rect(50350,75,35)
font=pygame.font.SysFont(“代理FB”,50)
bFont=无
var=True
而var:
#存储鼠标位置
mouse=pygame.mouse.get_pos()
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
var=False
#按钮点击
如果event.type==pygame.MOUSEBUTTONDOWN:
#从列表中选择一个并单击
如果按钮直接碰撞点(事件位置):
rb=随机选择(myList)
bFont=font.render(str(rb),True,白色)
屏幕光点(背景,(0,0))
#制作按钮
如果按钮直接碰撞点(鼠标):
pygame.draw.rect(屏幕,深灰色,(50,350,75,35),0)
其他:
pygame.draw.rect(屏幕,浅灰色,(50,350,75,35),0)
屏幕显示(按钮文本(55355))
如果是bFont:
屏幕blit(bFont,(50100))
pygame.display.update()

现在我的代码正确了吗?