【问题标题】:how to show all label content?如何显示所有标签内容?
【发布时间】:2019-10-03 17:21:22
【问题描述】:

我是 kivy 的新手,我正在创建一个游戏生成器,它根据用户可能输入的敌人数量生成随机遭遇的数量。但在最后部分,即使我输入了多个敌人,也只会显示一个敌人。

如何制作标签,显示其所有内容?

import random
import kivy
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button


class grid(GridLayout):
    def __init__(self, **kwargs):
        super(grid, self).__init__(**kwargs)

        self.cols = 1

        self.info_grid = GridLayout()
        self.info_grid.cols = 2

        self.info_grid.add_widget(Label(text="Numero de inimigos:"))
        self.Inimigos = TextInput()
        self.info_grid.add_widget(self.Inimigos)
        self.add_widget(self.info_grid)

        self.Gerador = Button(text="Gerar", font_size=40)
        self.Gerador.bind(on_press=self.Gerar)
        self.add_widget(self.Gerador)

        self.show_inimigos = (Label(text="Clique para gerar"))
        self.add_widget(self.show_inimigos)

    def Gerar(self, instance):

        int_inimigos = int(self.Inimigos.text)

        racas = ["HUMANO", "ELFO", "ANÃO", "HOBBIT", "LAGARTÃO", "LEONINO", "NEZUMI"]
        classe = ["APPRENTICE", "FIGHTER", "KNIGHT", "BERSERKER", "FENCER", "NINJA", "HOPLITE", "BEAST TAMER",
                  "DRAGON TAMER", "ARCHER", "ROUGE", "DOLL MASTER", "WARLOCK", "MAGE", "ACOLYTE", "MONK", "CLERIC",
                  "BARD", "WARLORD", "SHAMAN", "DRUID", "SPEAKER", "MERCHANT", "ALCHEMIST", "BLACKSMITH", "CHEF"]
        elemento = ["FIRE", "AIR", "WATER", "EARTH", "LIGHT", "DARK"]

        for i in range(int_inimigos):
            escolha_raca = random.choice(racas)
            escolha_classe = random.choice(classe)
            escolha_elemento = random.choice(elemento)
            encontro = (escolha_raca + ' : ' + escolha_classe + '  -  ' + escolha_elemento)

            self.show_inimigos.text = (encontro + "\n")


class MyApp(App):
    def build(self):
        return grid()


if __name__ == "__main__":
    MyApp().run()

我认为 Gerar 函数有问题

【问题讨论】:

    标签: python user-interface kivy


    【解决方案1】:
    for i in range(int_inimigos):
        escolha_raca = random.choice(racas)
        escolha_classe = random.choice(classe)
        escolha_elemento = random.choice(elemento)
        encontro = (escolha_raca + ' : ' + escolha_classe + '  -  ' + escolha_elemento)
    
        self.show_inimigos.text = (encontro + "\n")
    

    看起来您总是将 self.show_inimigos.text 设置为迭代中最近的 encontro 的值。

    执行self.show_inimigos.text += encontro + '\n' 之类的操作。

    【讨论】:

    • 我之前试过这个,但是它不断地添加越来越多的遭遇并且不重置
    • 我已经完成了一行代码来解决这个问题! self.show_inimigos.text = ""感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多