PyQt Web Browser: фокус на веб-странице без щелчка мышью

1

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

Теги:
embedded
pyqt
webkit

2 ответа

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_())
0

Я попробовал свой код на своем ноутбуке, и 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_())

Ещё вопросы

Сообщество Overcoder
Наверх
Меню