PyQt Web浏览器:无需点击鼠标即可专注于网页

时间:2011-06-28 21:30:13

标签: python linux webkit embedded pyqt

我正在编写一个没有鼠标输入的嵌入式设备的应用程序。 Web浏览器非常基本,没有任何按钮,地址栏,文件栏等。现在,它只是加载一个网页。此网页使用javascript来捕获关键新闻事件以进行操作。

我遇到的问题是,当浏览器加载时,按键没有被捕获。我已将此问题追溯到我认为是焦点问题。浏览器加载时,在应用程序上发生鼠标单击之前,它没有焦点。由于我没有鼠标,因此无法进行初始点击。

如何确保浏览器应用程序正确聚焦,以便当我从终端或脚本启动它时,它将立即获得焦点并且关键事件可以相应地发生?

我的代码如下:

#!/usr/bin/env python
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *

app = QApplication(sys.argv)
web = QWebView()
web.showFullScreen()
web.load(QUrl("http://www.google.com"))
sys.exit(app.exec_())

QWidget.setFocus()无效,假设我正确使用了它。任何帮助表示赞赏。感谢

2 个答案:

答案 0 :(得分:0)

我在我的笔记本电脑上尝试了你的代码,QWebView已经有了焦点 - 一旦谷歌加载了我就可以输入了,我的文字出现在文本框中。

如果它是焦点问题,那么当QWebView继承QWidget时,您可以调用其setFocus()方法。这是你的代码,在页面加载后,你需要额外的一行来调用QWebView的setFocus方法:

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

app = QApplication(sys.argv)
web = QWebView()
web.loadFinished.connect(web.setFocus)
web.showFullScreen()
web.load(QUrl("http://www.google.com/"))
sys.exit(app.exec_())

答案 1 :(得分:0)

您可以将焦点设置在主框架上:

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


if __name__ == '__main__':
    app = QApplication(sys.argv)
    web = QWebView()
    frame = web.page().mainFrame()
    frame.setFocus()
    web.showFullScreen()
    web.load(QUrl("http://www.google.com"))
    sys.exit(app.exec_())