python回调可以调用.NET方法吗?

2024-04-23 08:45:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个BeagleBone黑运行Debian,有一个480x272像素的斗篷(触摸屏)。我使用wicd作为有线/无线接口,因为它有一个非常好的python/gtk-based solution,可以让最终用户轻松地设置各种网络配置。

问题是最终用户无法使用物理键盘,因此为了进入wifi设置,他们需要一个虚拟键盘。

我的主要项目是基于mono的(C#),我有一个用GtkSharp(C#)编写的虚拟键盘。我可以从其他C项目文件调用它,但不能从python模块打开它。

我通常调用wicd客户机:

    private void CallWicdDialaog()
    {
        Process proc = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "/usr/bin/wicd-client",
                Arguments = "-n",
                UseShellExecute = false,
                RedirectStandardOutput = false,
                CreateNoWindow = true
            }
        };
        proc.Start();
    }

这将在本机Debian操作系统中启动python进程,而不是通过mono/C项目。除了这个虚拟键盘之外,我不需要在wicd和我的mono项目之间进行“通信”。

wicd项目在其guiutil.py文件中挂接gtk焦点事件,如下所示:

^{pr2}$

我想做的是在show_characters定义中调用我的虚拟键盘。

我该怎么做?

  • 有没有一种方法可以从这个python回调到mono通信?在
  • 有没有办法从mono向python注入回调?在
  • 我是否需要用python重写基于GtkSharp的键盘,让Debian操作系统以本机方式处理所有事情?在
  • 有没有其他虚拟键盘可以处理这么小的屏幕空间?在
  • 有没有别的办法我还没想到呢?在

Tags: 文件项目falsegtknew像素debianproc
3条回答

这些系统集成问题从来都不容易解决。下面是一些我要看的东西。在

在启动键盘的时候。想办法用终端里的线来做。一旦你有了它,你就可以计算出控制流。在

传输数据可能很有趣。首先想到的两件事是:

  1. 尝试设置C键盘以返回可以通过stdout/in解析的文本。然后简单地从python应用程序中fork()到键盘。它对bash有用,为什么不呢?在
  2. 在C项目中编写一个小型udp服务器,并让它将输出发送到python应用程序。在内部环回上做这一切,你不应该为开放端口做广告。在
  3. 在启动时运行这两个程序,并让它们都监听系统中断以进行控制切换。在

祝你好运!在

您可以使用键盘创建一个独立的GtkSharp应用程序,打印到stdout并使用subprocess.check_output从python运行它。在

您可以将python代码移植到IronPython这应该允许双向调用,但您可能必须为目标环境构建IronPython。在

如果你可以在键盘上提供C/C++接口,你可以使用它作为扩展模块,这可能比直接把它移植到Python上花费更少的精力。在

或者,可以将键盘作为外部进程调用,并在子进程中使用管道。在

相关问题 更多 >