为了账号安全,请及时绑定邮箱和手机立即绑定

通过调用两个函数 Pygame 实时更新文本

通过调用两个函数 Pygame 实时更新文本

达令说 2022-06-02 17:25:25
我有一个程序,它接受用户的输入并使用该Population()函数显示输入的多种变体。该store_fit函数将这些不同的变体添加到列表中,然后将它们删除,以便列表一次仅填充一个变体。我希望能够从列表中获取变体并使用它来更新我的文本。Population但是,我的程序仅在功能完成后才更新文本。我怎样才能运行该Population功能并同时更新我的文本?代码:fit = []...def store_fit(fittest): # fittest is each variation from Population    clear.fit()    fit.append(fittest)...pg.init()...done = Falsewhile not done:...    if event.key == pg.K_RETURN:        print(text)        target = text        Population(1000) #1000 variations        store_fit(value)        # I want this to run at the same time as Population        fittest = fit[0]...top_sentence = font.render(("test: " + fittest), 1, pg.Color('lightskyblue3'))screen.blit(top_sentence, (400, 400))
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

我建议制作Population一个生成器功能。请参阅Python yield 关键字解释:


def Populate(text, c):

    for i in range(c):


        # compute variation

        # [...]


        yield variation

创建一个迭代器并用于next()检索循环中的下一个变体,因此您可以打印每个变体:


populate_iter = Populate(text, 1000)


final_variation = None

while not done:


    next_variation = next(populate_iter, None)

    if next_variation :

        final_variation = next_variation 


        # print current variation

        # [...]


    else:

        done = True


根据评论编辑:


为了让我的问题简单,我没有提到Population, 是一个类 [...]


当然Populate can be a class,也是。在这种情况下,您必须实现该object.__iter__(self)方法。例如:


class Populate:

    def __init__(self, text, c):

        self.text = text

        self.c    = c


    def __iter__(self):

        for i in range(self.c):


            # compute variation

            # [...]


            yield variation

通过创建一个迭代器iter()。例如:


populate_iter = iter(Populate(text, 1000))


final_variation = None

while not done:


    next_variation = next(populate_iter, None)

    if next_variation :

        final_variation = next_variation 


        # print current variation

        # [...]


    else:

        done = True


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信