Py学习  »  tornado

在TornadoFx中使用工作区时如何使用范围?

Hexworks • 7 年前 • 1353 次点击  

我正在使用 Workspace 龙卷风的特点,我正在努力使他们与 Scopes . 当我启动应用程序时,我需要设置一些东西,当它完成时,我启动TornadoFX应用程序并提供 Scope 我的第一个观点。之后我想能够 dock 我的其他观点 工作空间 在新的 范围 但这不起作用,因为某些原因:原始的 View 不会被拆掉,但是新的 视图 我只是在屏幕上看不到它。有什么问题?下面是我的代码来重现这个问题:

fun main(args: Array<String>) {
    Application.launch(TestApp::class.java, *args)
}


class ParentScope : Scope() {
    val id = UUID.randomUUID().toString().substring(0, 4)
}

class ChildScope : Scope() {
    val id = UUID.randomUUID().toString().substring(0, 4)
}

class TestApp : App(Workspace::class) {

    override fun onBeforeShow(view: UIComponent) {
        workspace.dock<ParentView>(ParentScope())
    }
}

class ParentView : View("parent") {

    override val scope = super.scope as ParentScope

    override val root = hbox {
        button("new child") {
            action {
                workspace.dock<ChildView>(ChildScope())
            }
        }
    }

    override fun onDock() {
        logger.info("Docking parent (${scope.id})")
    }

    override fun onUndock() {
        logger.info("Undocking parent (${scope.id})")
    }

}

class ChildView : View("child") {

    override val scope = super.scope as ChildScope

    override val root = hbox {
        text("In child")
    }

    override fun onDock() {
        logger.info("Docking child (${scope.id})")
    }

    override fun onUndock() {
        logger.info("Undocking child (${scope.id})")
    }

}

单击w后的输出 new child 按钮是这样的:

10:56:19.415 [JavaFX Application Thread] INFO  Test - Docking parent (d202) 
10:56:23.967 [JavaFX Application Thread] INFO  Test - Docking child (cbc5)

我看到的是一样的 ParentView . 如果我点击 新生儿童 再一次 ChildView 脱离连接,一个新的 儿童观 停靠,但我仍然只看到 父视图 :

10:56:31.228 [JavaFX Application Thread] INFO  Test - Undocking child (cbc5)
10:56:31.228 [JavaFX Application Thread] INFO  Test - Docking child (1dd8)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30961
文章 [ 1 ]  |  最新文章 7 年前