如何将wxPython应用程序转换为无头unix作业?

时间:2013-02-11 23:55:45

标签: python linux wxwidgets

我目前在Linux机箱中运行2.8.9.1的wx。

我正在处理的应用程序最初编写为在MS Windows上运行。我们计划将部分核心逻辑移植到linux并将其作为一个进程运行。

问题是linux盒子是无头的。我们不会有X-windows环境。但现有的代码库是以与wx层紧密耦合的方式编写的。

例如,我有几个类是wx.EvtHandler的子类

我可能会一个接一个地重写它们,但它确实不太理想。

在新的Wx Pheonix中,有一个AppConsole class似乎能够在没有X-Windows的情况下启动事件循环。但是我的本地版本的wx中没有它。

目标最终是在cron作业中运行代码

我基本上正在寻找一些关于如何解决这个问题的建议/指示。尽可能避免尽可能多的重写会很好。

2 个答案:

答案 0 :(得分:2)

一种方法是使用本地显示器。 Ssh使用选项-X进入服务器,将显示重定向到工作站

ssh -X server

在您的服务器上启动应用程序,它将自动使用工作站的显示。

对于Windows,例如存在XmingCygwin

作为替代方案,您可以使用Xvfb,它提供无头X服务器。然后,您可以使用xvfb-run作为

启动您的应用程序
xvfb-run my_wx_application

答案 1 :(得分:0)

事实证明重写并不算太糟糕。

我的代码中只有三个对wx对象的依赖

1)继承wx.EvtHandler

2)wx.CallLater

3)wx.CallAfter

所以第一种情况需要重新解释

另一个可以通过threading.Timer轻松替换。