python - 尝试在 Jython 中加载 JavaFX 类时出现导入问题

标签 python jython

我有 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/

相关文章:

java - 是否有 ANT 的 XMLTask 的替代方案可以在不更改文件结构的情况下进行 XML 替换?

python - 在 PhpStorm 中使用 Pstorm 时排除目录

python - 我可以为 python while 循环分配默认值吗?

python - 在 Mac OSX 10.6 上安装 Python 2.7 成像模块时出错

Python 2.7 奇怪的导入警告

java - 我可以用 Jython/Python 扩展 Jenkins 吗

java - _winreg 的 Python 替代品

python - WebSphere 8.5 中的事件线程

python - 如何修复 Python 处理模式中的错误计算?

python - X 和 Y 或 Z - 三元运算符