如何修复 Scyther wx.splashscreen 错误?

How can I fix the Scyther wx.splashscreen error?

安装 Scyther 以及 Graphwiz 和 wxPython 后,出现错误:

File "scyther-gui.py", line 141, in <module>
class MySplashScreen(wx.SplashScreen):

AttributeError: 'module' 对象没有属性 'SplashScreen'

这显然是因为 Scyther 是用旧版本的 wxPython 编写的。

我发现 Thomas Fleming 已经为更新的 wxPython 版本更新了它(我有 4.0.7.post2),你可以找到他的 GitHub 存储库 here。看起来它会在某个时候被拉入主分支,但此刻我使用了他的叉子。 自述文件中的说明非常清楚,我照着做了没问题,但对我来说文件 scyther-linux 没有自动从 /src 复制到 /gui 所以我不得不手动移动它。

他的修复似乎也适用于 mac 上的人,但是,我使用的是 Ubuntu 18.4,虽然我已经克服了闪屏错误并加载了 Scyther,但我无法打开文件,得到

File "/home/weaver/tools/scyther-master/gui/Gui/Mainwindow.py", line 291, in OnOpen
    if self.askUserForFilename(style=wx.OPEN,
AttributeError: 'module' object has no attribute 'OPEN'

和保存的等价物。

为了解决这个问题,我打开了 /gui/Gui/Mainwindow.py,并将第 291 行从

更改为
if self.askUserForFilename(style=wx.OPEN,

if self.askUserForFilename(style=wx.FD_OPEN,

并在第 302 行对 wx.SAVE 执行相同操作,将其更改为 wx.FD_SAVE

目前看来 运行 还不错。

希望这对您有所帮助。