Kivy - 为reStructuredText创建样式按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kivy - 为reStructuredText创建样式按钮相关的知识,希望对你有一定的参考价值。

我想在Kivy中为reStructuredText小部件创建按钮。这些按钮可以执行粗体,下划线或标题等基本操作,因此用户无需手动输入标记。例如,用户可以选择一些文本然后单击“粗体”按钮,然后文本将被[b] ... [/ b]包围。

我很乐意展示我尝试过的代码,但老实说,我甚至不知道从哪里开始。 (或者,如果有更好的方法在Kivy中实现基本文本编辑,请告诉我。)我目前正在使用Kivy语言通过简单地添加来显示第一个小部件

RstDocument:
    show_errors: True

到kv文件(以及保存等...按钮)。

答案

enter image description here

在你的问题中,我第一次听说了RstDocument小部件。你让我感兴趣,我想出了一个最小的示例应用程序,这可能是你添加更多的一个很好的起点。这是我的python文件

from kivy.app import App
from kivy.base import Builder
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout



Builder.load_string("""
<root_wgt>:
    orientation: 'vertical'
    BoxLayout:
        size_hint_y:0.2
        Button:
            text: 'Emphasize'
            on_press: root.emphasize()
        Button:
            text: 'Section Header'
            on_press: root.add_section_header()
        Button:
            text: 'Subection Header'
            on_press: root.add_sub_section_header()

    BoxLayout:
        orientation: 'vertical'
        TextInput:
            id: textinput

        RstDocument:
            id: rstdocument
            text: textinput.text
""")


class root_wgt(BoxLayout):
    def emphasize(self):
        text = self.ids.textinput.text
        selection = self.ids.textinput.selection_text
        begin = self.ids.textinput.selection_from
        end = self.ids.textinput.selection_to
        new_text = text[:begin] + ' **' + selection + '** ' + text[end:]
        self.ids.textinput.text = new_text
        self.ids.rstdocument.render()

    def add_section_header(self):
        self.ids.textinput.insert_text("""
==============""")

    def add_sub_section_header(self):
        self.ids.textinput.insert_text("""
-----------------""")

class MyApp(App):
    def build(self):
        return root_wgt()

if __name__ == '__main__':
    MyApp().run()

或者,你可以选择一个标签,它也有一些样式选项https://kivy.org/docs/api-kivy.uix.label.html#markup-text实现看起来非常相似。

以上是关于Kivy - 为reStructuredText创建样式按钮的主要内容,如果未能解决你的问题,请参考以下文章

将markdown转换为reStructuredtext?

reStructuredText语法

sh 此脚本将完整的reStructuredText文件转换为Markdown文件。

sh 此脚本将完整Markdown文件的目录转换为reStructuredText文件。

reStructuredText语法简单说明

在 reStructuredText 中跳过标题级别