首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PyQt5中嵌入终端

问在PyQt5中嵌入终端
EN

Stack Overflow用户
提问于 2018-08-23 05:52:08
回答 1查看 2.7K关注 0票数 2

因此,我一直在尝试创建我自己的终端,但事实证明这是非常错误的,而且看起来不专业。

然后我偶然发现了这段用于PyQt4的代码:

代码语言:javascript
复制
#!/usr/bin/env python
#-*- coding:utf-8 -*-

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


class embterminal(QWidget):

    def __init__(self):
        QWidget.__init__(self)
        self.process = QProcess(self)
        self.terminal = QWidget(self)
        layout = QVBoxLayout(self)
        layout.addWidget(self.terminal)
        #self.process.start(
                #'xterm',['-into', str(self.terminal.winId())])
        # Works also with urxvt:
        self.process.start(
                'urxvt',['-embed', str(self.terminal.winId())])


if __name__ == "__main__":
    app = QApplication(sys.argv)
    main = embterminal()
    main.show()
    sys.exit(app.exec_())

因为我的应用程序是用PyQt5编写的,所以我自然地尝试将代码移植到PyQt5。我将from PyQt4.QtCore import * from PyQt4.QtGui import *更改为from PyQt5.QtCore import * from PyQt5.QtGui import *并添加了from PyQt5.QtWidgets import *

然后,当我运行我的代码时,我意识到终端没有弹出。

我想知道为什么会发生这种情况,是否有解决方法?

我还想知道是否可以在同一个项目/文件中同时使用PyQt5和PyQt4。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-23 17:41:03

在PyQt中。QWidget.winId()返回一个sip.voidptr对象,但是如果您将其转换为整数,它应该可以工作。下面是一个有效的示例:

代码语言:javascript
复制
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.process = QProcess(self)
        self.terminal = QWidget(self)
        layout = QVBoxLayout(self)
        layout.addWidget(self.terminal)
        wid = str(int(self.terminal.winId()))
        self.process.start('urxvt', ['-embed', wid])

    def closeEvent(self, event):
        self.process.terminate()
        self.process.waitForFinished(1000)

if __name__ == "__main__":

    app = QApplication(sys.argv)
    window = Window()
    window.setGeometry(100, 100, 800, 600)
    window.show()
    sys.exit(app.exec_())
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51975678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档