1

我目前在 linux 机器上运行 2.8.9.1 的 wx。

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

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

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

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

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

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

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

4

2 回答 2

2

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

ssh -X server

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

对于 Windows,例如存在XmingCygwin

作为替代方案,您可以使用Xvfb提供无头 X 服务器。然后,您可以使用xvfb-runas启动您的应用程序

xvfb-run my_wx_application
于 2013-02-12T00:03:43.550 回答
0

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

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

1) 子类化 wx.EvtHandler

2) wx.CallLater

3) wx.CallAfter

所以第一种情况需要重新实现

另一个可以很容易地用threading.Timer替换。

于 2013-02-12T01:56:15.973 回答