我目前在Linux机箱中运行2.8.9.1的wx。
我正在处理的应用程序最初编写为在MS Windows上运行。我们计划将部分核心逻辑移植到linux并将其作为一个进程运行。
问题是linux盒子是无头的。我们不会有X-windows环境。但现有的代码库是以与wx层紧密耦合的方式编写的。
例如,我有几个类是wx.EvtHandler的子类
我可能会一个接一个地重写它们,但它确实不太理想。
在新的Wx Pheonix中,有一个AppConsole class似乎能够在没有X-Windows的情况下启动事件循环。但是我的本地版本的wx中没有它。
目标最终是在cron作业中运行代码
我基本上正在寻找一些关于如何解决这个问题的建议/指示。尽可能避免尽可能多的重写会很好。
答案 0 :(得分:2)
一种方法是使用本地显示器。 Ssh
使用选项-X
进入服务器,将显示重定向到工作站
ssh -X server
在您的服务器上启动应用程序,它将自动使用工作站的显示。
作为替代方案,您可以使用Xvfb
,它提供无头X服务器。然后,您可以使用xvfb-run
作为
xvfb-run my_wx_application
答案 1 :(得分:0)
事实证明重写并不算太糟糕。
我的代码中只有三个对wx对象的依赖
1)继承wx.EvtHandler
2)wx.CallLater
3)wx.CallAfter
所以第一种情况需要重新解释
另一个可以通过threading.Timer轻松替换。