wx创建一个突出显示文本的wx.html.HtmlWindow()



使用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((小部件或wx.html 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)

GUI代码:

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可以,但即使这样也可能会与report.html文件中的内联css发生冲突
不过,您可以随时尝试wx.html2
除此之外,为什么不使用wx.LaunchDefaultBrowser("path_to_file/report.html")

脑海中浮现的另一个选项是使用:

difflib.HtmlDiff().make_table(contents1, contents2, file1.name, file2.name)

然后添加您自己的css。

最新更新