代码之家  ›  专栏  ›  技术社区  ›  West

如何在Python QT设计器中插入web浏览器

  •  2
  • West  · 技术社区  · 7 年前

    from PyQt5 import uic, QtWidgets
    import sys
    
    app = QtWidgets.QApplication(sys.argv)
    window = uic.loadUi("test.ui")
    window.show()
    sys.exit(app.exec_())
    

    似乎没有一个小部件可以用来在QT设计器中插入一个web浏览器小部件,所以我正在寻找一个小部件来实现这一点,方法是使用一个类或其他东西,并将小部件添加到设计器中已经创建的接口中。

    1 回复  |  直到 7 年前
        1
  •  4
  •   eyllanesc    7 年前

    一个简单的解决方案是使用 QWebEngineView ,在我的例子中,我可以在Qt Designer中找到它:

    enter image description here

    但是如果你没有它,那就没有问题了,因为那就是推广一个小部件。在一个 previous answer 我指出这是怎么做的 QVideoWidget ,但在你的情况下,你应该只改变

    Promoted class name: QWebEngineView
    Header file: PyQt5.QtWebEngineWidgets
    

    测试.ui

    <?xml version="1.0" encoding="UTF-8"?>
    <ui version="4.0">
     <class>Form</class>
     <widget class="QWidget" name="Form">
      <property name="geometry">
       <rect>
        <x>0</x>
        <y>0</y>
        <width>400</width>
        <height>300</height>
       </rect>
      </property>
      <property name="windowTitle">
       <string>Form</string>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout">
       <item>
        <widget class="QWebEngineView" name="widget" native="true"/>
       </item>
      </layout>
     </widget>
     <customwidgets>
      <customwidget>
       <class>QWebEngineView</class>
       <extends>QWidget</extends>
       <header>PyQt5.QtWebEngineWidgets</header>
       <container>1</container>
      </customwidget>
     </customwidgets>
     <resources/>
     <connections/>
    </ui>
    

    主.py

    import os
    import sys
    
    from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets, uic
    
    if __name__ == '__main__':
        app = QtWidgets.QApplication(sys.argv)
        path_ui = os.path.join(os.path.dirname(__file__), "test.ui")
        window = uic.loadUi(path_ui)
        window.widget.load(QtCore.QUrl("https://stackoverflow.com/"))
        window.show()
        sys.exit(app.exec_())
    
    推荐文章