标签: jython

使用Jython和Swing处理事件

我正在使用来自Jython的Swing制作GUI.事件处理似乎从Jython特别优雅,只是设置

JButton("Push me", actionPerformed = nameOfFunctionToCall)
Run Code Online (Sandbox Code Playgroud)

但是,在课堂上尝试同样的事情变得困难.天真的尝试

JButton("Push me", actionPerformed = nameOfMethodToCall)
Run Code Online (Sandbox Code Playgroud)

要么

JButton("Push me", actionPerformed = nameOfMethodToCall(self))
Run Code Online (Sandbox Code Playgroud)

从类的GUI构造方法不起作用,因为要调用的方法的第一个参数应该是self,以便访问类的数据成员,另一方面,它不可能通过通过AWT事件队列的事件处理程序的任何参数.唯一的选择似乎是使用lambda(在http://www.javalobby.org/articles/jython/上建议),结果是这样的:

JButton("Push me", actionPerformed = lambda evt : ClassName.nameOfMethodToCall(self))
Run Code Online (Sandbox Code Playgroud)

它有效,但优雅已经消失.所有这一切只是因为被调用的方法需要从某个地方进行引用.还有其他方法吗?

python java user-interface swing jython

8
推荐指数
1
解决办法
2567
查看次数

学习Java所以我可以学习clojure

我有一个讨厌Java的历史,在90年代末的"慢球"时代经常使用它.因此,我从未真正学到它.据我所知,Java实际上是一种非常好用的语言.我一直在考虑因为Jython和Clojure而潜入它.也就是说,我想用Java编程并在适当的地方使用内联Jython或Clojure.但说实话,我可能只是在Jython/jRuby中编程并从那里调用clojure.

这让我想到了我的问题.我知道这两种语言都可以从Java调用,但这是否一定是好的做法?如果我只想使用Jython作为主要语言,我是否应该费心学习java?看到这是我的动机中的很大一部分,我想知道在进入之前我并没有被误导.我知道如果用多种语言进行项目成为一个kludge的风险很高像这样.

我还在学习JVM之类的东西,所以如果这个问题很明显,我会道歉.

java jython clojure

8
推荐指数
1
解决办法
1166
查看次数

python GUI与Swing相比?

我想说"与Swing相比最好的python GUI"......但严厉地说我的问题是"过于主观".我为机器中的确定性幽灵道歉.

我目前正在使用Jython ...在使用Java数年之后,它已经使用了6个月.我喜欢Jython能够调用所有Java类,以及简化从Java方式到Python方式的转换.

但考虑到这一点,我意识到到目前为止我使用的最常见的Java包是Swing的.我花了很多年与Swing搏斗,最后认为我有一种身体锁定的野兽.顺便说一句,我也认为Swing很棒,而且我不得不说我是键盘狂热者,所以不想切换到你没有权力的图形用户界面. ActionMap-InputMap,可能并不是很多人关心的.真的让我回到JTree和JTable上也是一种耻辱,花了很多时间撕掉我头发上留下的东西.说真的,他们非常强大......

但与此同时,我很快就迷上了Python的做事方式.我可以并且打算坚持使用Jython.但我只是想知道各种CPython GUI是什么样的......特别是它们的功能和多功能性与Swing相比如何?

补充:我被要求提供一些细节:好的,如果你想要的话,坐在滚动窗格上的树GUI对象怎么样,可以使用键盘来控制导航和折叠/扩展节点...滚动自动发生(如果你想要的话)和你可以控制外观和感觉的地方等.或者你可以全面控制调整大小的表格,以及当单个细胞获得/失去焦点时会发生什么.您可以在哪里子类化渲染器和编辑器.正如我在评论中所说的那样,一个热衷于此的人,以及Swing的大用户,但仍然转向了CPython GUI并且感到高兴/不快......可能是回答这个问题的理想人选.

python comparison user-interface swing jython

8
推荐指数
1
解决办法
8517
查看次数

如何从java类调用python方法?

我在Java项目中使用Jython.

我有一个Java类:myJavaClass.java和一个Python类:myPythonClass.py

public class myJavaClass{
    public String myMethod() {
        PythonInterpreter interpreter = new PythonInterpreter();
        //Code to write
    }
 }
Run Code Online (Sandbox Code Playgroud)

Python文件如下:

class myPythonClass:
    def abc(self):
        print "calling abc"
        tmpb = {}
        tmpb = {'status' : 'SUCCESS'}
        return tmpb
Run Code Online (Sandbox Code Playgroud)

现在问题是我想abc()myMethod我的Java文件的方法调用我的Python文件的方法并打印结果.

python java methods jython

8
推荐指数
1
解决办法
1万
查看次数

Java:用于嵌入Java桌面应用程序的脚本语言(宏)

我正在用Java编写图形应用程序.最终我想用脚本语言构建,所以事情是可编程的.你推荐哪种语言库?

可能的嫌疑人是:

不太可能的候选人是:

目标受众可能不是核心程序员,因此首选的是较少的晦涩语言.我的猜测是JavaScript更容易被他们接受,即使它的怪癖只是因为他们已经看到了更多.

Lua似乎在C/C++中很受欢迎,但至少LuaJava需要额外的.dll/.so,这使部署变得复杂.

编辑: PhiLho写道,有一个Java实现的Lua称为甘露.


相关问题:

javascript java scripting lua jython

7
推荐指数
1
解决办法
2959
查看次数

你如何使用python在jar文件中调用python脚本?

我正在开发一个散布一堆jython和java代码的应用程序.由于程序的性质(使用wsadmin),我们实际上仅限于Python 2.1

我们目前有一个包含java源和.py模块的jar.该代码目前使用java调用,但我想删除它,以支持尽可能多的功能迁移到jython.

我遇到的问题是我想从调用jython脚本导入或执行现有jar文件中的python模块.我尝试了几种不同的方法但没有成功.

我的目录结构如下:

application.jar
  |-- com
       |--example
            |-- action
                 |-- MyAction.class
                 |-- pre_myAction.py
Run Code Online (Sandbox Code Playgroud)

我试过的第一种方法是从罐子里进口.我将jar添加到我的sys.path并尝试使用import com.example.action.myAction 导入模块并导入myAction.但是,即使我将init .py文件放入每个级别的目录中也没有成功.

我尝试的第二种方法是使用java类加载资源.所以我写了下面的代码:

import sys
import os
import com.example.action.MyAction as MyAction

scriptName = str(MyAction.getResource('/com/example/action/myAction.py'))
scriptStr = MyAction.getResourceAsStream('/com/example/action/myAction.py')

try:
  print execfile(scriptStr) 
except:
  print "failed 1"

try:
  print execfile(scriptName) 
except:
  print "failed 2"
Run Code Online (Sandbox Code Playgroud)

这两个都失败了.关于我该如何继续,我现在有点不知所措.有任何想法吗 ?

干杯,

特雷弗

python java import jython jar

7
推荐指数
1
解决办法
3819
查看次数

如何在Jython项目中创建基于Sphinx的文档?

我正在使用Java编写的库来处理几个Jython项目.由于autodoc扩展,我想用Sphinx创建一些好的文档.但是当我尝试创建html时,我得到错误,因为autodoc找不到用Java编写的库:

sphinx-build -b html -d _build/doctrees   . _build/html
Running Sphinx v1.0.5
loading pickled environment... done
building [html]: targets for 1 source files that are out of date
updating environment: 0 added, 1 changed, 0 removed
reading sources... [100%] index

/Users/myName/myJythonProject/doc/index.rst:14: (WARNING/2) 
autodoc can't import/find module 'myJythonProject', it reported error: 
"global name 'PoolManager' is not defined",
please check your spelling and sys.path
Run Code Online (Sandbox Code Playgroud)

其中PoolManager是Java类.

任何人都可以帮我解决这个问题吗?

python java jython python-sphinx

7
推荐指数
1
解决办法
1869
查看次数

从python中的类列表中随机选择x个项目

在jython中,我有一类像这样定义的对象:

class Item:
  def __init__(self, pid, aisle, bay, hits, qtyPerOrder):
    self.pid = pid
    self.aisle = int(aisle)
    self.bay = bay
    self.hits = int(hits)
    self.qtyPerOrder = int(qtyPerOrder)
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为"list"的类列表,该类列表中的项目有4000~行,如下所示:

'PO78141', 13, ' B ', 40
Run Code Online (Sandbox Code Playgroud)

我试图随机选择一个范围为3和20的数字,称为x.然后,代码将在列表中选择x行.

例如:如果x = 5,我希望它返回:

'PO78141', 13, ' B ', 40
'MA14338', 13, ' B ', 40
'GO05143', 13, ' C ', 40
'SE162004', 13, ' F ', 40
'WA15001', 13, ' F ', 40
Run Code Online (Sandbox Code Playgroud)

编辑 好吧,这似乎工作.但是,它将返回此< main .Item对象0x029990D0>.我如何让它以上述格式返回?

python random jython class list

7
推荐指数
2
解决办法
8377
查看次数

使用Jython运行python脚本时,"sys-package-mgr*:无法创建包缓存目录"

我想用Jython运行Python脚本.

结果显示正确,但同时有一条警告消息,"sys-package-mgr*:无法创建包缓存目录"

我怎么能解决这个问题?

提前谢谢~~~

python jython

7
推荐指数
2
解决办法
7311
查看次数

仅使用默认库在jython中解码json

我有一个关于将json放入我的jy​​thon脚本的问题.这是我的情景:

  • 我正在我的笔记本电脑上运行python应用程序
  • 该应用程序需要与第三方云环境中托管环境中运行的jython应用程序共享数据.
  • 我无法将第三方模块添加到此环境中(因此我无法安装com.xhaus.jyson)
  • 这可能意味着我可能只限于java-org.json.JSONObject本机的功能

因此,有了这些限制,我想在我的笔记本电脑上使用字典对象,将其转换为json,将其传递给托管的jython应用程序,然后使用本机jython或java工具将其转换回该字典对象,以便我可以继续工作在我托管在云端的脚本中.

我已经知道如何在"常规" python中执行此操作.这很简单.导入json并疯狂.但我的java功夫很弱,我以前从未在jython工作过.

所以我试图弄清楚这是否可以使用jython底层的java可靠而轻松地做到这一点,或者如果我最好使用像ast这样的东西,只需将字典作为字符串文字发送.我真的更喜欢坚持使用json,因为人们喜欢json的所有正常原因,所以任何帮助利用java库来完成这项工作将不胜感激.

python java json jython

7
推荐指数
1
解决办法
7106
查看次数