Я пишу приложение для встроенного устройства, которое не имеет ввода мыши. Веб-браузер очень прост и не имеет никаких кнопок, адресной строки, строки файлов и т.д. На данный момент он просто загружает веб-страницу. Эта веб-страница использует 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() не работал, предполагая, что я использовал его правильно. Любая помощь приветствуется. благодаря
Вы можете установить фокус на основной кадр:
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_())
Я попробовал свой код на своем ноутбуке, и QWebView уже сосредоточился - как только Google загрузил, я мог печатать, и мой текст появился в текстовом поле.
Если это проблема фокуса, тогда как QWebView наследует QWidget, вы можете вызвать метод setFocus(). Вот ваш код с дополнительной строкой, вызывающей метод setFocus QWebView после загрузки страницы:
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_())