我正在编写一个没有鼠标输入的嵌入式设备的应用程序。 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()无效,假设我正确使用了它。任何帮助表示赞赏。感谢
答案 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_())