在javagui中使用Python
我在JavaSwing中制作了一个GUI,但是我为该GUI的功能制作了许多python脚本,我是否可以使用python脚本在JavaSwing GUI界面中显示内容?谢谢 看看Jython() 它是Java中的python实现在javagui中使用Python,java,python,swing,user-interface,Java,Python,Swing,User Interface,我在JavaSwing中制作了一个GUI,但是我为该GUI的功能制作了许多python脚本,我是否可以使用python脚本在JavaSwing GUI界面中显示内容?谢谢 看看Jython() 它是Java中的python实现 理论上,您不应该更改python代码(如果它“质量良好”),但在实践中,我建议您必须在这里和那里进行一些更改。我个人并不使用Jython,但是所有不同的python实现通常都或多或少兼容,但并不完全相同。您将无法使用依赖于C ABI的python库,但纯python脚本应
理论上,您不应该更改python代码(如果它“质量良好”),但在实践中,我建议您必须在这里和那里进行一些更改。我个人并不使用Jython,但是所有不同的python实现通常都或多或少兼容,但并不完全相同。您将无法使用依赖于C ABI的python库,但纯python脚本应该可以工作。您可能不希望在应用程序的最终版本中使用此方法,但为了快速而肮脏的方法,您可以在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
}
}
这是超级补丁,所以,再一次,我只将其用于临时测试目的。但对于这些情况,它确实很有帮助 我需要转换所有脚本吗?@user1510602这是Java中的python实现。我找到了一个更好的解决方案,JYMatise,一个swing GUI构建器,但可以用python编写支持代码,