我有一个很大的应用程序正在使用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)
我了解到 QX11EmbedContainer 不在PyQt5中,并且 createWindowContainer 的某些用法可能是新方法,但我无法在实际操作中找到此示例
理想情况下,我希望使用PyQt5约定和方法将上述代码移植到功能齐全的示例中,但是以任何形式提供的任何帮助都会有所帮助。
我看过Embedding external program inside pyqt5,但是那里只有一个win32解决方案,并且如果有适用于所有3的通用解决方案,则我需要在Linux和MacOS上运行,而Windows则不必要。感觉这已经接近了,但是我找不到在一般实现中使用的 win32gui 模块的合适替代品。
我看过example of embedding matplotlib in PyQt5 1,但这与matplotlib有关,而与一般情况无关。
所有指针和帮助都将受到感激。