PyQt5:寻找在Application中嵌入外部应用程序窗口的示例

时间:2018-07-29 23:13:16

标签: python pyqt5 embed

我有一个很大的应用程序正在使用PyQt5在Python3中开发。我想做的事情很像在PyQt4中做的事情:

# -*- coding: utf-8 -*-
import atexit

from PyQt4.QtCore import *
from PyQt4.QtGui import *


class XTerm(QX11EmbedContainer):

    def __init__(self, parent, xterm_cmd="xterm"):
        QX11EmbedContainer.__init__(self, parent)
        self.xterm_cmd = xterm_cmd
        self.process = QProcess(self)
        self.connect(self.process,
                     SIGNAL("finished(int, QProcess::ExitStatus)"),
                     self.on_term_close)
        atexit.register(self.kill)

    def kill(self):
        self.process.kill()
        self.process.waitForFinished()

    def sizeHint(self):
        size = QSize(400, 300)
        return size.expandedTo(QApplication.globalStrut())

    def show_term(self):
        args = [
            "-into",
            str(self.winId()),
            "-bg",
            "#000000",  # self.palette().color(QPalette.Background).name(),
            "-fg",
            "#f0f0f0",  # self.palette().color(QPalette.Foreground).name(),
            # border
            "-b", "0",
            "-w", "0",
            # blink cursor
            "-bc",
        ]
        self.process.start(self.xterm_cmd, args)
        if self.process.error() == QProcess.FailedToStart:
            print "xterm not installed"

    def on_term_close(self, exit_code, exit_status):
        print "close", exit_code, exit_status
        self.close()

(来自https://bitbucket.org/henning/pyqtwi...11/terminal.py

  • 这是:将X11 Shell终端(xterm)嵌入到我的应用程序的选项卡中。

我了解到 QX11EmbedContainer 不在PyQt5中,并且 createWindowContainer 的某些用法可能是新方法,但我无法在实际操作中找到此示例

理想情况下,我希望使用PyQt5约定和方法将上述代码移植到功能齐全的示例中,但是以任何形式提供的任何帮助都会有所帮助。

我看过Embedding external program inside pyqt5,但是那里只有一个win32解决方案,并且如果有适用于所有3的通用解决方案,则我需要在Linux和MacOS上运行,而Windows则不必要。感觉这已经接近了,但是我找不到在一般实现中使用的 win32gui 模块的合适替代品。

我看过example of embedding matplotlib in PyQt5 1,但这与matplotlib有关,而与一般情况无关。

所有指针和帮助都将受到感激。

0 个答案:

没有答案