我有 JavaFX 的示例 Jython 代码,如下所示:
# hello.py
from javafx.application import Application
from javafx.scene import Scene
import javafx.scene.control
from javafx.scene.layout import AnchorPane
class Hello(Application):
def start(self, stage):
stage.setTitle("Hello, World!")
root = AnchorPane()
label = javafx.scene.control.Label("Hello, World!")
root.getChildren().add(label)
scene = Scene(root, 100, 40)
stage.setScene(scene)
stage.show()
if __name__ == '__main__':
Application.launch(Hello().class, [])
在这里,我可以import javafx.scene.control
然后像javafx.scene.control.Label("Hello, World!")
一样使用它,但是为什么我不能执行 from javafx.scene.control import Label
吗?
这是 Jython 信息:
$ jython
Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:48:36)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.8.0_25
Type "help", "copyright", "credits" or "license" for more information.
>>>
最佳答案
如果您将 from
/import
语句移至 start
方法内,就在您需要 Label
之前> 控制,我打赌你的代码会工作。
对于在 JavaFX8 上运行的 Jython,在 JavaFX 运行时启动之前您无法执行某些操作(例如导入控制)。 (JavaFX2 没有这么挑剔。)因此,启动 JavaFX 运行时是 Jython/JavaFX 程序应该做的第一件事。 (我有一个专门用于执行此操作的模块。)然后您可以导入其他所有内容。
顺便说一句,我认为您不想使用 from
/import
方法,而是使用 import
/ as
方法。前者会破坏缓存,而后者不会。
关于python - 尝试在 Jython 中加载 JavaFX 类时出现导入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27555479/