как показать все содержимое ярлыка? - PullRequest
0 голосов
/ 03 октября 2019

Я новичок в 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

1 Ответ

0 голосов
/ 03 октября 2019
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'.

...