Python 将字符串拆分为不同的标签

Python 将字符串拆分为不同的标签,python,kivy,Python,Kivy,我试着把一个字符串分成几个单词,然后把每个单词放在不同的标签上。 我在这里找到了一个可以拆分和打印每个单词的代码: my_phrase="The split method returns a list of the words in the string" my_split_words = my_phrase.split() for each_word in my_split_words: print each_word 但是,如何进行循环,而不是打印,生成标签 我正在使用Python

我试着把一个字符串分成几个单词,然后把每个单词放在不同的标签上。 我在这里找到了一个可以拆分和打印每个单词的代码:

my_phrase="The split method returns a list of the words in the string"
my_split_words = my_phrase.split() 
for each_word in my_split_words:
   print each_word
但是,如何进行循环,而不是打印,生成标签

我正在使用Python2.7和Kivy作为GUI。提前谢谢

很抱歉,如果我的格式错误,请先在此处发布:)

编辑1:

for lab in labels:
    s.add_widget(lab)
我的代码现在看起来像这样:

from kivy.app import App

from kivy.uix.scatter import Scatter
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout

class TestApp(App):
    def build(self):
        b = BoxLayout(orientation='vertical')
        f = FloatLayout()
        s = Scatter()
        l = [Label(text=word) for word in "The split method returns a list of the words in the string".split()]

        f.add_widget(s)
        s.add_widget(l)
        b.add_widget(f)
        return b

if __name__ == "__main__":
    TestApp().run()
在@Hugh Bothwell回答之后,我尝试用旧的L标签替换拆分时生成的多个标签,但没有成功:t

Edit2: 现在我的代码运行良好,谢谢大家。 它接受用户的输入,然后将字符串拆分为分散标签。 这有点凌乱,但它可以完成任务

class TestApp(App):
    def build(self):
        ti = TextInput(font_size=30,
                      size_hint_y=None,
                      height=50,
                      text='default')
        b = BoxLayout(orientation='vertical')
        f = FloatLayout()

        def SplitIntoLabels(*args):
            f.clear_widgets()
            for word in new_list:
                s = Scatter(size_hint_x=None, size_hint_y=None, do_rotation=False)
                l = Label(text=word, font_size=50)
                s.add_widget(l)
                f.add_widget(s)
                s.size=l.size

        ti.bind(text=SplitIntoLabels)

        b.add_widget(ti)
        b.add_widget(f)

        return b

if __name__ == "__main__":
    TestApp().run()
编辑:

for lab in labels:
    s.add_widget(lab)
或者更直接地说

for word in my_phrase.split():
    s.add_widget(Label(text=word))
编辑:

for lab in labels:
    s.add_widget(lab)
或者更直接地说

for word in my_phrase.split():
    s.add_widget(Label(text=word))
您运行的是
s.add_widget(l)
,但
l
不是一个小部件,它是一个列表……所以这显然不起作用

相反,你想做一些类似的事情

for widget in l:
    s.add_widget(widget)
另外,当你说“但它不起作用”时,通常说它是如何起作用的是很有用的,可能还有回溯。在这种情况下,您可能会得到一个
WidgetException
,其中包含一些关于该问题的文本,这将有助于您调试它。或者可能还有另一个错误,如果有更多信息,我不会错过。

您运行
s.add\u widget(l)
,但是
l
不是一个小部件,它是一个列表……所以这显然不起作用

相反,你想做一些类似的事情

for widget in l:
    s.add_widget(widget)

另外,当你说“但它不起作用”时,通常说它是如何起作用的是很有用的,可能还有回溯。在这种情况下,您可能会得到一个
WidgetException
,其中包含一些关于该问题的文本,这将有助于您调试它。或者可能还有另一个错误,如果提供更多信息,我不会错过。

你说的
标签是什么意思?
?如果你指的是GUI标签,你需要指定你使用的GUI工具包。对不起,我使用的是Kivy,忘了提及。我将尝试将每个标签放在分散窗口中。您所说的
标签是什么意思?如果您指的是GUI标签,则需要指定您使用的GUI工具包。对不起,我使用的是Kivy,忘了提及。我会试着把每个标签放在我的代码中(用一种愚蠢的方式)我试图用你的想法替换旧标签,当然它不起作用。你知道我需要改变什么吗?谢谢你的回答!我试图在我的代码中(以一种愚蠢的方式)用你的想法替换旧标签,当然它不起作用。你知道我需要改变什么吗?谢谢你的回答!非常感谢。现在它的工作方式我意识到。但是散点的行为方式与我最初的理解不同,所有标签在同一散点中重叠在一起,不可能单独移动它们。我认为我需要进行循环,为每个单词生成一个新的散点,在
中为每个单词添加一个新标签。对于t.split()中的单词:f.add_widget(s)s.add_widget(label(text=word))
,但这样我会收到一个属性错误:“NoneType”对象没有属性“bind”。你能帮我吗,如果不是太多的要求?我不明白你的新代码是什么,你能把它添加到你原来的帖子吗?它现在正在工作,在原来的帖子上添加了代码。谢谢你的帮助!非常感谢。现在它的工作方式我意识到。但是散点的行为方式与我最初的理解不同,所有标签在同一散点中重叠在一起,不可能单独移动它们。我认为我需要进行循环,为每个单词生成一个新的散点,在
中为每个单词添加一个新标签。对于t.split()中的单词:f.add_widget(s)s.add_widget(label(text=word))
,但这样我会收到一个属性错误:“NoneType”对象没有属性“bind”。你能帮我吗,如果不是太多的要求?我不明白你的新代码是什么,你能把它添加到你原来的帖子吗?它现在正在工作,在原来的帖子上添加了代码。谢谢你的帮助!