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”。你能帮我吗,如果不是太多的要求?我不明白你的新代码是什么,你能把它添加到你原来的帖子吗?它现在正在工作,在原来的帖子上添加了代码。谢谢你的帮助!