2.qt designer主窗口中拖入QTabWidget 3.拖入QWidget并提长升为QWebEngineView 4.QTabWidget切换到QWebEngineView所在页面后,无法切换到其他页面
时间: 2024-04-27 09:19:15 浏览: 138
问题可能出在您的QWebEngineView没有正确设置大小。请确保将QWebEngineView的大小设置为QTabWidget的大小,以便正确显示。另外,请确保将QWebEngineView的SizePolicy设置为Expanding,以便它可以随着QTabWidget的大小变化而自动调整大小。如果问题仍然存在,请查看您的信号和槽是否正确连接,以确保正确切换到其他页面。
相关问题
module 'PyQt5.QtGui' has no attribute 'QTabWidget'
如果在使用 `PyQt5.QtGui` 模块时报错说找不到 `QTabWidget` 属性,那可能是因为你在引用模块时使用的版本不包含这个组件,或者引入的模块名有误。`QTabWidget` 是从 `PyQt5.QtWidgets` 模块导入的,而不是直接从 `QtGui` 中获取。正确的导入应该是:
```python
from PyQt5.QtWidgets import QTabWidget
```
如果你已经正确导入了上面的代码,但仍遇到该错误,可能是库文件未安装完全或者版本过旧。确认你的 PyQt5 安装包含了所有需要的组件,特别是 QtWidgets 部分。如果仍然有问题,检查你的项目设置和依赖管理工具,如 pip 或 conda,确保正确安装和更新了所需的库。
from PySide2.QtCore import * from PySide2.QtWidgets import * from PySide2.QtWebEngineWidgets import * class TabWidget(QTabWidget): def __init__(self, *args, **kwargs): QTabWidget.__init__(self, *args, **kwargs) url = QUrl("https://www.163.com") view = HtmlView(self) view.load(url) ix = self.addTab(view, "加载中 ...") self.resize(800, 600) class HtmlView(QWebEngineView): def __init__(self, *args, **kwargs): QWebEngineView.__init__(self, *args, **kwargs) self.tab = self.parent() def createWindow(self, windowType): if windowType == QWebEnginePage.WebBrowserTab: webView = HtmlView(self.tab) ix = self.tab.addTab(webView, "加载中 ...") self.tab.setCurrentIndex(ix) return webView return QWebEngineView.createWindow(self, windowType) if __name__ == "__main__": import sys app = QApplication(sys.argv) main = TabWidget() main.show() sys.exit(app.exec_()),在这段代码中添加关闭网页的按钮和功能。
你可以在 `TabWidget` 类中添加一个按钮,并连接到一个槽函数来关闭当前的 `HtmlView`。以下是修改后的代码:
```python
from PySide2.QtCore import *
from PySide2.QtWidgets import *
from PySide2.QtWebEngineWidgets import *
class TabWidget(QTabWidget):
def __init__(self, *args, **kwargs):
QTabWidget.__init__(self, *args, **kwargs)
url = QUrl("https://www.163.com")
view = HtmlView(self)
view.load(url)
ix = self.addTab(view, "加载中 ...")
self.resize(800, 600)
# 添加关闭按钮
closeButton = QPushButton("关闭网页", self)
closeButton.clicked.connect(self.closeCurrentTab)
self.setCornerWidget(closeButton)
# 关闭当前标签页
def closeCurrentTab(self):
ix = self.currentIndex()
if ix >= 0:
view = self.widget(ix)
self.removeTab(ix)
view.deleteLater()
class HtmlView(QWebEngineView):
def __init__(self, *args, **kwargs):
QWebEngineView.__init__(self, *args, **kwargs)
self.tab = self.parent()
def createWindow(self, windowType):
if windowType == QWebEnginePage.WebBrowserTab:
webView = HtmlView(self.tab)
ix = self.tab.addTab(webView, "加载中 ...")
self.tab.setCurrentIndex(ix)
return webView
return QWebEngineView.createWindow(self, windowType)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
main = TabWidget()
main.show()
sys.exit(app.exec_())
```
在上面的代码中,我们添加了一个按钮 `closeButton`,并将其设置为窗口的角落部件,这样它就会出现在标签页的右上角。当用户点击按钮时,它会触发 `closeCurrentTab` 槽函数,该函数会关闭当前标签页,并删除对应的 `HtmlView` 对象。
阅读全文