wxpython - 创建一个 wx.html.HtmlWindow() 突出显示的文本
wxpython - create a wx.html.HtmlWindow() that has highlighted text
使用 wxpython 4.1.0,Windows 10 x64,Python 3.7.7 x64...
我想要实现的是非常基本的,但无法通过阅读 wxpython 文档和搜索互联网来弄清楚。
我使用 python 的原生 difflib
模块创建了 HTML 差异报告。如果您使用任何流行的浏览器 Chrome、Firefox、Edge 等打开此 html 差异报告,您会得到很好的突出显示,以区分所发现的差异。
当我使用 wxpythons wx.html.HtmlWindow() 小部件打开同一个文件时,没有显示漂亮的视觉效果。不会显示清楚显示差异的突出显示,而只会显示文本,几乎不可能找到差异。
wxpython 在功能方面非常完整,我假设有一种方法可以使用 wx.html.HtmlWindow() 小部件或 [=36 中的类似小部件来实现此目的=] API。我在想实现这一目标的唯一方法可能是使用 wx.html2 API.
用于查看我的问题的最少代码量(为简单起见不包括在 类 中):
DIFFLIB代码:
import difflib
import pathlib as path
file1 = path.Path('text_file1.txt')
file2 = path.Path('text_file2.txt')
with file1.open() as file_obj1:
contents1 = file_obj1.readlines()
with file2.open() as file_obj2:
contents2 = file_obj2.readlines()
html = difflib.HtmlDiff().make_file(contents1, contents2, file1.name, file2.name)
with open('report.html', 'w') as file_obj:
file_obj.write(html)
界面代码:
import wx
import wx.html
def html_window():
frame = wx.Frame(parent=None)
html = wx.html.HtmlWindow(frame)
html.LoadFile('report.html')
frame.Show()
app = wx.App(False)
html_window()
app.MainLoop()
你的问题是wx.html
不支持css。
wx.html2
可以,但即使那样也可能与内联 css 有冲突,这就是 report.html
文件中的内容。
不过,您始终可以尝试 wx.html2
.
除此之外,为什么不使用 wx.LaunchDefaultBrowser("path_to_file/report.html")
想到的另一个选择是使用:
difflib.HtmlDiff().make_table(contents1, contents2, file1.name, file2.name)
然后添加您自己的 css。
使用 wxpython 4.1.0,Windows 10 x64,Python 3.7.7 x64...
我想要实现的是非常基本的,但无法通过阅读 wxpython 文档和搜索互联网来弄清楚。
我使用 python 的原生 difflib
模块创建了 HTML 差异报告。如果您使用任何流行的浏览器 Chrome、Firefox、Edge 等打开此 html 差异报告,您会得到很好的突出显示,以区分所发现的差异。
当我使用 wxpythons wx.html.HtmlWindow() 小部件打开同一个文件时,没有显示漂亮的视觉效果。不会显示清楚显示差异的突出显示,而只会显示文本,几乎不可能找到差异。
wxpython 在功能方面非常完整,我假设有一种方法可以使用 wx.html.HtmlWindow() 小部件或 [=36 中的类似小部件来实现此目的=] API。我在想实现这一目标的唯一方法可能是使用 wx.html2 API.
用于查看我的问题的最少代码量(为简单起见不包括在 类 中):
DIFFLIB代码:
import difflib
import pathlib as path
file1 = path.Path('text_file1.txt')
file2 = path.Path('text_file2.txt')
with file1.open() as file_obj1:
contents1 = file_obj1.readlines()
with file2.open() as file_obj2:
contents2 = file_obj2.readlines()
html = difflib.HtmlDiff().make_file(contents1, contents2, file1.name, file2.name)
with open('report.html', 'w') as file_obj:
file_obj.write(html)
界面代码:
import wx
import wx.html
def html_window():
frame = wx.Frame(parent=None)
html = wx.html.HtmlWindow(frame)
html.LoadFile('report.html')
frame.Show()
app = wx.App(False)
html_window()
app.MainLoop()
你的问题是wx.html
不支持css。
wx.html2
可以,但即使那样也可能与内联 css 有冲突,这就是 report.html
文件中的内容。
不过,您始终可以尝试 wx.html2
.
除此之外,为什么不使用 wx.LaunchDefaultBrowser("path_to_file/report.html")
想到的另一个选择是使用:
difflib.HtmlDiff().make_table(contents1, contents2, file1.name, file2.name)
然后添加您自己的 css。