python回调可以调用.NET方法
本文关键字:NET 方法 调用 回调 python | 更新日期: 2023-09-27 17:59:24
我有一个运行Debian的BeagleBone Black,附带一个480x272像素的斗篷(触摸屏)。我将wicd用于有线/无线接口,因为它有一个非常好的基于python/gtk的解决方案,已经为最终用户轻松设置各种网络配置做好了准备。
问题是,最终用户将无法使用物理键盘,因此为了输入wifi设置,他们需要一个虚拟键盘。
我的主要项目是基于单声道(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
和我的单声道项目之间的"通信"。
wicd
项目在其guiutil.py
文件中挂起一个gtkfocus事件,如下所示:
class LabelEntry(gtk.HBox):
""" A label on the left with a textbox on the right, 370 pixels wide. """
def __init__(self,text):
...
self.entry.connect('focus-in-event', self.show_characters)
...
def show_characters(self, widget=None, event=None):
# When the box has focus, show the characters
""" I would like to hook my virtual keyboard in here """
if self.auto_hide_text and widget:
self.entry.set_visibility(True)
我想做的是在show_characters
定义中调用我的虚拟键盘。
我该怎么做?
- 有没有一种方法可以从这个python回调到mono进行通信
- 有没有一种方法可以将回调注入python FROM mono
- 我需要用python重写基于GtkSharp的键盘,让Debian操作系统原生地处理所有事情吗
- 有没有其他虚拟键盘可以处理这么小的屏幕空间
- 有没有其他我没有想到的解决方案
嗯。这些系统集成问题从来都不容易解决。以下是我想看的一些东西。
当谈到启动键盘时。弄清楚如何在终端中使用线路。一旦你有了它,你就可以计算出控制流。
传输数据可能很有趣。首先想到的两件事是:
- 尝试设置C#键盘以返回可以通过stdout/in解析的文本。然后简单地从python应用程序分叉()到键盘。它适用于bash,为什么不这样呢
- 在C#项目中编写一个小型udp服务器,并让它将输出发送到python应用程序。在内部环回上完成所有操作,就不应该宣传开放端口
- 在启动时运行两者,并让两者都监听系统中断以进行控制切换
祝你好运!
您可以将python代码移植到IronPython,这应该允许双向调用,但您可能必须为目标环境构建IronPython。
如果你能为你的键盘提供一个C/C++接口,你就可以把它用作扩展模块,这可能比直接把它移植到Python要省力。
或者,您可以将键盘作为外部进程调用,并使用子进程中的管道。
您可以使用键盘制作一个独立的GtkSharp应用程序,打印到stdout,并使用subprocess.check_output.