我在 java swing 中制作了一个 GUI,但是我为该 GUI 的功能制作了许多 python 脚本,无论如何我可以使用我的 python 脚本在 Java Swing GUI 界面中显示内容吗?谢谢!
user1786283
问问题
9649 次
2 回答
3
查看 Jython ( http://www.jython.org/ )
这是Java中的python实现。
理论上你不应该改变你的python代码(如果它“质量好”),但实际上我建议你必须在这里和那里做一些改变。我个人不使用 Jython,但所有各种 python 实现通常或多或少兼容,但并不完全相同。您将无法使用依赖于 C ABI 的 python 库,但纯 python 脚本应该可以工作。
于 2012-07-16T15:48:39.490 回答
0
您可能不想为您的应用程序的最终版本执行此操作,但为了快速而肮脏的方法,您可以在 java 中运行外部程序并捕获输出。(我之前在将程序从 python 移植到 java 的过程中使用过这个,想在 java 后端完成之前查看 java 前端是否工作,而不用担心替换 CPython 模块。)这个示例程序运行 python 程序test.py
并打印输出:
import java.io.*;
class Jexec{
public void Jexec(){}
private String exec(String execStr){
try{
// run process and capture stdout
Process p = Runtime.getRuntime().exec(execStr);
InputStream s = p.getInputStream();
// convert stdout to a string
BufferedReader br = new BufferedReader(new InputStreamReader(s));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
String output = sb.toString();
p.destroy();
return output.toString();
}catch(Exception e){
//actually handle the error here
e.printStackTrace();
return String.format("*** Running \"%s\" failed. ***",execStr);
}
}
public static void main(String[] args){
Jexec je = new Jexec();
System.out.println(je.exec("python test.py")); //in your case, you would use the output instead of just printing it
}
}
这是超级不完整的,所以,再次,我只会将它用于临时测试目的。但对于这些情况,它确实很有帮助。
于 2012-07-16T17:15:51.340 回答