将字符串分割为不同标签
我正在尝试把一个字符串分割成单词,然后把每个单词放到不同的标签上。
我在这里找到了一段代码,可以分割并打印出每个单词:
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 2.7和Kivy来做图形界面。提前谢谢大家!
抱歉如果我的格式不对,这是我第一次发帖 :)
编辑 1:
我现在的代码看起来是这样的:
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
编辑2:
现在我的代码运行得很好,谢谢大家。
它从用户那里获取输入,然后把字符串分割成散布的标签。
虽然有点乱,但能完成任务!
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()
2 个回答
2
from kivy.uix.label import Label
my_phrase = "The split method returns a list of the words in the string"
labels = [Label(text=word) for word in my_phrase.split()]
for lab in labels:
s.add_widget(lab)
for word in my_phrase.split():
s.add_widget(Label(text=word))
编辑:
或者,更直接地说,
2
你运行了 s.add_widget(l)
,但是 l
其实不是一个小部件,而是一个列表……所以这样做显然是行不通的。
你应该尝试做类似这样的事情:
for widget in l:
s.add_widget(widget)
另外,当你说“但是它没有工作”时,通常最好能说明一下 具体是怎么没有工作的,最好能附上错误信息。在这种情况下,你可能会遇到一个 WidgetException
,里面会有一些关于问题的描述,这样可以帮助你找到问题所在。或者,也许还有其他错误,如果有更多信息的话,我可能就不会错过了。