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