PyQT(也称为C+;+;QT绑定)嵌入式urxvt终端失去焦点

PyQT(也称为C+;+;QT绑定)嵌入式urxvt终端失去焦点,qt,qt4,pyqt4,rxvt,Qt,Qt4,Pyqt4,Rxvt,我在QT应用程序中嵌入urxvt终端时遇到问题。下面是简化的代码示例。当我创建一个QT窗口并在其中嵌入urxvt终端时(通过使用-embed参数),我的焦点有问题。当创建窗口时,第一次点击进入窗口使焦点对准嵌入式终端->一切正常,但当我第二次点击进入窗口时,终端似乎失去了焦点,尽管正常的键盘和鼠标输入仍在工作。但终端本身似乎认为,它没有焦点。看起来,事件仍然被发送到嵌入窗口,尽管它没有焦点。 使用C++ Qt绑定时出现同样的问题。 将设置添加到.Xdefaults(并运行必要的xrdb-load

我在QT应用程序中嵌入urxvt终端时遇到问题。下面是简化的代码示例。当我创建一个QT窗口并在其中嵌入urxvt终端时(通过使用-embed参数),我的焦点有问题。当创建窗口时,第一次点击进入窗口使焦点对准嵌入式终端->一切正常,但当我第二次点击进入窗口时,终端似乎失去了焦点,尽管正常的键盘和鼠标输入仍在工作。但终端本身似乎认为,它没有焦点。看起来,事件仍然被发送到嵌入窗口,尽管它没有焦点。 使用C++ Qt绑定时出现同样的问题。 将设置添加到.Xdefaults(并运行必要的xrdb-load.Xdefaults)时,可以很好地看到:URxvt*衰减:-40

以下是简化的示例:

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


class embterminal(QWidget): 

    def __init__(self):
        QWidget.__init__(self)
        self.setGeometry(1,1,600,400)
        self.process = QProcess(self)

        self.terminal = QX11EmbedContainer(self)
        layout = QVBoxLayout(self)
        layout.addWidget(self.terminal)

        self.terminal.showMaximized();

        self.process.start('urxvt',['-embed', str(self.terminal.winId())])

if __name__ == "__main__":
    app = QApplication(sys.argv)
    main = embterminal()
    main.show()
    sys.exit(app.exec_())`
从以下文件:

QX11EmbedContainer可以从中嵌入XEmbed小部件 Qt以外的工具包,如GTK+。任意(非XEmbed)X11 小部件也可以嵌入,但XEmbed的特定功能 窗口激活和焦点处理将丢失

因此,也许urxvt(或您的版本)不支持的所有必要的功能

出现了一个web搜索:

urxvt-embed几乎可以工作。它声称支持它和一切,但是 单击时不发送。这意味着 失去焦点后,无法恢复焦点


废话,不是我想听的。不过还是要谢谢你。。。这是一个很大的失望。虽然奇怪的是,当使用GTK时,它以某种方式工作…这会导致任何问题吗?正如你所说,键盘和鼠标事件仍然是传递的。是的,它是-实际上,因为嵌入式窗口认为,它没有焦点-它的行为是这样的。。例如,终端光标不是tblinking。。一切都是灰色的。。。等