使用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
不支持csswx.html2
可以,但即使这样也可能会与report.html
文件中的内联css发生冲突
不过,您可以随时尝试wx.html2
除此之外,为什么不使用wx.LaunchDefaultBrowser("path_to_file/report.html")
脑海中浮现的另一个选项是使用:
difflib.HtmlDiff().make_table(contents1, contents2, file1.name, file2.name)
然后添加您自己的css。