【问题标题】:pygtk how to embed external application within my pygtk GUIpygtk 如何在我的 pygtk GUI 中嵌入外部应用程序
【发布时间】:2010-01-07 21:10:04
【问题描述】:

我正在设计一个 pygtk GUI,并希望在其中嵌入一个外部应用程序。

有谁知道如何做到这一点?

【问题讨论】:

  • 不太清楚“嵌入”是什么意思?你能更具体地描述一下你的情况吗?
  • “嵌入”是什么意思。更具体并举例说明。
  • 我以前在 Gambas2 中做过这个。它应该看起来像这样upload.snelhest.org/images/0812134.png 您可以在屏幕截图中看到 gparted 如何嵌入到我的应用程序中。 '嵌入'我的意思是启动一个外部应用程序......但不是让窗口管理器装饰它并将其放置在桌面上,它需要直接进入我的应用程序。把它想象成做一个 reparent 但在一个窗口上而不是一个小部件

标签: python pygtk embedding


【解决方案1】:

这取决于您尝试嵌入的应用程序,但如果另一个应用程序是 GTK 应用程序(或支持 XEMBED 协议的应用程序),您应该可以使用 gtk.Pluggtk.Socket 执行此操作. PyGTK 教程有一节解释如何做到这一点:

http://www.pygtk.org/pygtk2tutorial/sec-PlugsAndSockets.html

【讨论】:

  • 我确实看过,但我只是不明白这将如何帮助我嵌入外部应用程序。 xwinfo 报告的窗口 ID 类似于 0x12343,但插件需要 LONG 格式的窗口 ID...我不知道如何将这 2 部分组合在一起
【解决方案2】:

这个可能会有所帮助。阅读文章 19.15。如何使用插头和插座嵌入东西? (http://faq.pygtk.org/index.py?req=all#19.15) 并了解如何将任意 X Window 应用程序嵌入 (Py)GTK Socket。

【讨论】:

    【解决方案3】:

    您不使用外部程序来获取gtk.Plug/gtk.Socket ID,它们有各自的功能。有关示例,请参阅本教程:link

    【讨论】:

      【解决方案4】:

      如果您尝试重新设置外部窗口(可能不是 gtk 窗口),您可以使用

      w = gdk.window_foreign_new(window_id)
      

      从操作系统窗口句柄中获取一个gdk窗口对象,然后使用

      w.reparent(parent_window, x, y)
      

      将其重新设置为现有的 gtk 容器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-25
        相关资源
        最近更新 更多