PyQt网页浏览器:如何在不点击鼠标的情况下聚焦网页
我正在为一个没有鼠标输入的嵌入式设备写一个应用程序。这个网页浏览器非常简单,没有按钮、地址栏、文件栏等等。目前,它只是加载一个网页。这个网页使用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
我在我的笔记本上试了你的代码,发现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_())
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_())