【问题标题】:PyQt Web Browser: Focus on the webpage without a mouse clickPyQt Web Browser:无需鼠标点击即可专注于网页
【发布时间】:2011-09-24 16:38:14
【问题描述】:

我正在为没有鼠标输入的嵌入式设备编写应用程序。 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() 不起作用,假设我正确使用它。任何帮助表示赞赏。谢谢

【问题讨论】:

    标签: python linux webkit embedded pyqt


    【解决方案1】:

    我在笔记本电脑上尝试了您的代码,并且 QWebView 已经有了焦点 - 一旦 Google 加载完毕,我就可以输入并且我的文本出现在文本框中。

    如果是焦点问题,那么当 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_())
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-14
        • 2023-03-20
        • 1970-01-01
        • 2023-03-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多