【问题标题】:Combining Tkinter (Python) and Swing (Jython)结合 Tkinter (Python) 和 Swing (Jython)
【发布时间】:2014-02-27 10:55:37
【问题描述】:

我有一个基于 Tkinter 的 UI,我想展示一个用 Jython 制作的甘特图(使用摆动)

问题是我不想有两个不同的窗口,一个用于 Tkinter UI,另一个用于 Jython 的甘特图。

有没有办法将两个东西放在一个窗口中?

提前致谢。

【问题讨论】:

    标签: python swing tkinter jython


    【解决方案1】:

    我感受到您的痛苦,但是 GUI 工具包管理自己的窗口,并且大多数情况下不可能在不使用特定于操作系统的本机 API 的情况下共享或嵌入窗口。

    您可以创建一个小程序以在框/矩形中显示您的摆动窗口,但 Tkinter 不附带可以显示网页或小程序的小部件。逆过程是technically possible,但我还没有看到任何现实世界的实际例子。

    如果不需要功能,最好的办法是捕获窗口的输出(Java 示例:Swing: Obtain Image of JFrame)并在 Tkinter 上显示您的图表

    import Image, ImageTk
    
    im = Image.open('file_name').convert2byte()
    tkimage = ImageTk.PhotoImage(im)
    
    Tkinter.Label(root, image=tkimage).pack() 
    

    附注:

    使用Jpype 和 Jtkinter 以相反的方式访问工具包是可能的,但是基于 Tcl 的 Tkinter 和 Swing 之间的区别仍然很大,它仍然不能解决这个问题。

    【讨论】:

    • 是的,我也想过将其保存为图像并在 Tkinter 中轻松加载的简单解决方案,但这对我来说没有用,因为甘特图需要实时操作。
    • 由于您已经使用了两个不同的 gui 工具包,我不想介绍第三层,但是有些库可以将两个不同进程的窗口停靠(嵌入)到一个窗口中,也许您可​​以尝试那如果你真的想实现这个。虽然它通常用于游戏,但它们使用 subprocess() 启动进程,然后使用 SDL(或 PyGame)捕获窗口。 SDL/PyGame 表面可以嵌入到 Tkinter 中。但恕我直言,这有点矫枉过正。
    猜你喜欢
    • 1970-01-01
    • 2019-06-25
    • 2017-10-11
    • 2016-09-02
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    相关资源
    最近更新 更多