假设Label小部件有一个文本' abcd [',它会按预期在输出屏幕上打印出正确的内容。但是当我将Label标签小部件的标记设置为True时,它会输出' abcd [[/ color]'。我该如何克服这个问题?我通过添加' \ n'找到了一个可能的解决办法。在文本中的开头括号之后。但由于我有很多小部件连续排在一起,所以换行很明显,看起来有点难看。
对于这个例子,我使用的是Button而不是Label。
这是
的输出 pets = Pet(name, animal_type, age)
print('This will be added to the records. ')
print('Here is the data you entered:')
print('Pet Name: ', pets.get_pet_name)
print('Animal Type: ', pets.get_pet_type)
print('Age: ', pets.get_pet_age)
这是
的输出Button:
markup: True
text: 'abcd\n['
正如我所说,添加换行符使其看起来很难看,附近小部件之间文本级别的差异看起来非常明显。
答案 0 :(得分:1)
这可以通过使用escape_markup
或替换' ['与'& bl;'。
方法1 :使用escape_markup
。
from kivy.app import App
from kivy.lang import Builder
kv = ('''
#:import escape kivy.utils.escape_markup
Label:
markup: True
text: 'abcd{}'.format(escape('['))
''')
class mainApp(App):
def build(self):
return Builder.load_string(kv)
if __name__ == '__main__':
mainApp().run()
方法2 :字符替换。
from kivy.app import App
from kivy.lang import Builder
kv = ('''
#:import escape kivy.utils.escape_markup
Label:
markup: True
text: 'abcd&bl;'
''')
class mainApp(App):
def build(self):
return Builder.load_string(kv)
if __name__ == '__main__':
mainApp().run()
现在,如果你想改变' ['你必须这样做:
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.properties import StringProperty
kv = (
'''
#:import escape kivy.utils.escape_markup
<L>:
markup: True
text: self.hidden_text
<B>:
Button:
text: 'press'
on_press: root.lel()
L:
id: lol
hidden_text: 'abcd{}'.format(escape('['))
markup: True
B
'''
)
class L(Label):
hidden_text = StringProperty('')
class B(BoxLayout):
def lel(self):
self.ids.lol.text = '{}[color=#E5D209]{}[/color]'.format(self.ids.lol.hidden_text[:4], self.ids.lol.hidden_text[4:])
class color(App):
def build(self):
return Builder.load_string(kv)
if __name__ == "__main__":
color().run()
注意我在B类的lel()中做了什么。要更改为&#39; [&#39;的颜色,我键入hidden_text [4:]而不是hidden_text [4]。这是因为当你逃避时(&#39; [&#39;),它所做的一切就是它取代了&#39; [&#39; by&#39;&amp; bl;&#39;。因此,当您使用hidden_text [4]时,您将获得此输出:
但是如果你使用hidden_text [4:],它会覆盖&amp;之后的字符。直到它到达分号。
要知道我在Label的文字中使用StringProperty的原因,请阅读here。