在 wxPython 和 Kivi 中呈现短文本项的最佳工具
best tool for rendering short items of text in wxPython and Kivi
我在桌面 (wxPython) 和移动 (kivy) 上有一个 multi-platform 应用程序 运行。在其中,我想在应用程序的 window 中呈现小区域的可变文本。文本将取决于应用程序的状态。我很乐意使用 rtf、html 或 reStructuredText。我需要在每个平台上为文本使用相同的来源。
文本片段的典型示例是:
Heading
=======
1. With 24 widgets pull a **long** one;
2. with fewer, push a **wide** one.
这将呈现为:
标题
- 有 24 个小部件拉一个 长 一个;
- 用的少,推一个宽一个。
我的问题是:我应该使用哪种格式?
我的偏好是 reStructuredText。似乎有一个 kivy widget 来支持这个,但在 wxPython
中没有
一种解决方案是使用 docutils 包。
这将采用 reStructuredText 并将其输出为 html。然后我可以使用 wxPython wx.html 控件来显示输出。
import wx
import wx.html as wxhtml
from docutils.core import publish_string
class MainFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = MainPanel(self)
sizer = wx.BoxSizer()
sizer.Add(self.panel)
self.SetSizerAndFit(sizer)
self.Show()
input_string = ("Heading\n"
"=======\n"
"\n"
"1. With 24 widgets pull a **long** one;\n"
"2. with fewer, push a **wide** one.\n")
self.display_rst(input_string)
def display_rst(self, rst):
html = publish_string(rst, writer_name='html')
self.panel.html.SetPage(html)
class MainPanel(wx.Panel):
def __init__(self, parent, *args, **kwargs):
wx.Panel.__init__(self, parent, *args, **kwargs)
display_style = wx.VSCROLL|wx.HSCROLL|wx.TE_READONLY|wx.BORDER_SIMPLE
self.html = wxhtml.HtmlWindow(self, -1, size=(300, 200),
style=display_style)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.html)
self.SetSizer(sizer)
if __name__ == "__main__":
SCREEN_APP = wx.App()
MAIN_FRAME = MainFrame(None, title="Display HTML")
SCREEN_APP.MainLoop()
我在桌面 (wxPython) 和移动 (kivy) 上有一个 multi-platform 应用程序 运行。在其中,我想在应用程序的 window 中呈现小区域的可变文本。文本将取决于应用程序的状态。我很乐意使用 rtf、html 或 reStructuredText。我需要在每个平台上为文本使用相同的来源。
文本片段的典型示例是:
Heading
=======
1. With 24 widgets pull a **long** one;
2. with fewer, push a **wide** one.
这将呈现为:
标题
- 有 24 个小部件拉一个 长 一个;
- 用的少,推一个宽一个。
我的问题是:我应该使用哪种格式?
我的偏好是 reStructuredText。似乎有一个 kivy widget 来支持这个,但在 wxPython
中没有一种解决方案是使用 docutils 包。
这将采用 reStructuredText 并将其输出为 html。然后我可以使用 wxPython wx.html 控件来显示输出。
import wx
import wx.html as wxhtml
from docutils.core import publish_string
class MainFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = MainPanel(self)
sizer = wx.BoxSizer()
sizer.Add(self.panel)
self.SetSizerAndFit(sizer)
self.Show()
input_string = ("Heading\n"
"=======\n"
"\n"
"1. With 24 widgets pull a **long** one;\n"
"2. with fewer, push a **wide** one.\n")
self.display_rst(input_string)
def display_rst(self, rst):
html = publish_string(rst, writer_name='html')
self.panel.html.SetPage(html)
class MainPanel(wx.Panel):
def __init__(self, parent, *args, **kwargs):
wx.Panel.__init__(self, parent, *args, **kwargs)
display_style = wx.VSCROLL|wx.HSCROLL|wx.TE_READONLY|wx.BORDER_SIMPLE
self.html = wxhtml.HtmlWindow(self, -1, size=(300, 200),
style=display_style)
sizer = wx.BoxSizer(wx.HORIZONTAL)
sizer.Add(self.html)
self.SetSizer(sizer)
if __name__ == "__main__":
SCREEN_APP = wx.App()
MAIN_FRAME = MainFrame(None, title="Display HTML")
SCREEN_APP.MainLoop()