我正在Jython中开发一个JavaFX应用程序。我经常使用jython
启动-i
以获得交互式控制台,因此我可以执行Python语句来检查/激励我的应用程序。但是,我经常忘记这些语句不会在JavaFX应用程序线程上执行,所以我回答:
java.lang.IllegalStateException: java.lang.IllegalStateException: Not on FX application thread; currentThread = MainThread
所以,我想出了这个:
import java.lang.Runnable
import javafx.application.Platform
def runOnJavaFXApplicationThread(func):
class _Runnable(java.lang.Runanble):
def __init__(self, func):
self.func = func
def run(self):
self.func()
javafx.application.Platform.runLater(_Runnable(func))
这允许我这样做:
>>> runOnJavaFXApplicationThread(lambda: someStatement())
但是,这很难满足。我必须记住导入包含此函数的模块并将所有内容包装在runOnJavaFXApplicationThread(lambda:
和)
中。当我想执行多个语句时,这真的很烦人。
要执行多个陈述,我希望能够这样说:
>>> runOnJavaFXApplicationThread('''
someStatement()
anotherStatement()
yetAnotherStatement()''')
我将如何实现这一目标?
或者,Python(Jython)控制台是否有办法通过某种功能“过滤”你给它的命令?