Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# python回调可以调用.NET方法吗?_C#_Python_Mono_Pygtk_Gtk# - Fatal编程技术网

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

C# python回调可以调用.NET方法吗?,c#,python,mono,pygtk,gtk#,C#,Python,Mono,Pygtk,Gtk#,我有一个BeagleBone黑色的运行Debian,带有一个480x272像素的cape(触摸屏)。我使用的是有线/无线接口,因为它有一个非常好的接口,终端用户可以轻松地设置各种网络配置 问题在于,最终用户将无法访问物理键盘,因此,为了输入wifi设置,他们将需要一个虚拟键盘 我的主要项目是基于单声道的(C),我有一个用(C)编写的虚拟键盘。我可以从其他C#项目文件中调用它,但无法从这个python模块中打开它 我通常通过以下方式调用wicd客户端: private void CallWicdD

我有一个BeagleBone黑色的运行Debian,带有一个480x272像素的cape(触摸屏)。我使用的是有线/无线接口,因为它有一个非常好的接口,终端用户可以轻松地设置各种网络配置

问题在于,最终用户将无法访问物理键盘,因此,为了输入wifi设置,他们将需要一个虚拟键盘

我的主要项目是基于单声道的(C),我有一个用(C)编写的虚拟键盘。我可以从其他C#项目文件中调用它,但无法从这个python模块中打开它

我通常通过以下方式调用
wicd
客户端:

private void CallWicdDialaog()
{
proc流程=新流程
{
StartInfo=新流程StartInfo
{
FileName=“/usr/bin/wicd-client”,
Arguments=“-n”,
UseShellExecute=false,
重定向标准输出=false,
CreateNoWindow=true
}
};
proc.Start();
}
这将在本机Debian操作系统中启动python进程,而不是通过mono/C项目。除了这个虚拟键盘,我不需要wicd和我的mono项目之间的“通信”

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

class LabelEntry(gtk.HBox):
“”“左边是一个标签,右边是一个370像素宽的文本框。”“”
定义初始化(self,text):
...
self.entry.connect('focus-in-event',self.show_字符)
...
def show_字符(self,widget=None,event=None):
#当框具有焦点时,显示字符
“”“我想在这里挂接虚拟键盘”“”
如果self.auto\u隐藏\u文本和小部件:
self.entry.set_可见性(True)
我想做的是在
show\u characters
定义中调用我的虚拟键盘

我该怎么做

  • 有没有一种从python回调到mono的通信方式
  • 有没有办法从mono向python注入回调
  • 我是否需要用python重写基于GtkSharp的键盘,让Debian操作系统以本机方式处理一切
  • 有没有其他虚拟键盘可以处理如此小的屏幕空间
  • 有没有其他我没想到的解决办法

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

      在启动键盘时。了解如何在终端中使用一条线路。一旦你有了它,你就可以算出控制流了

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

    • 尝试设置C#键盘以返回可通过标准输出/输入解析的文本。然后,只需从python应用程序将fork()连接到键盘。它适用于bash,为什么不适用于此
    • 在C#项目中编写一个小型udp服务器,并让它将输出发送到python应用程序。在内部环回上完成这一切,您不应该宣传开放端口
    • 在启动时运行两个,并让两个都监听系统中断以进行控制切换

    • 祝你好运

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

      如果您可以为键盘提供一个C/C++接口,就可以将其用作扩展模块,这可能比直接将其移植到Python要省力


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

      您可以使用键盘创建一个独立的GtkSharp应用程序,打印到标准输出,然后使用python运行它