先用纯Python代码写一个简单的小案例:

  1. from PyQt5.QtCore import QUrl
  2. from PyQt5.QtWidgets import QApplication,QWidget,QHBoxLayout,QFrame
  3. from PyQt5.QtWebEngineWidgets import QWebEngineView
  4. import sys
  5.  
  6. class Stacked(QWidget):
  7. def __init__(self):
  8. super(Stacked, self).__init__()
  9. self.initUI()
  10. self.mainLayout()
  11.  
  12. def initUI(self):
  13. self.setGeometry(400,400,800,600)
  14. self.setWindowTitle("demo1")
  15.  
  16. def mainLayout(self):
  17. self.mainhboxLayout = QHBoxLayout(self)
  18. self.frame = QFrame(self)
  19. self.mainhboxLayout.addWidget(self.frame)
  20. self.hboxLayout = QHBoxLayout(self.frame)
  21. self.myHtml = QWebEngineView()
  22. url = "http://www.baidu.com"
  23. #打开本地html文件
  24. self.myHtml.load(QUrl("file:///D:/360Downloads/Python编程/数据分析+数据可视化/pyecharts/PyQt5+pyecharts/bar1.html"))
  25. # self.myHtml.load(QUrl("bar1.html")) #无法显示,要使用绝对地址定位,在地址前面加上 file:/// ,将地址的 \ 改为/
  26. #打开网页url
  27. # self.myHtml.load(QUrl(url))
  28.  
  29. self.hboxLayout.addWidget(self.myHtml)
  30. self.setLayout(self.mainhboxLayout)
  31.  
  32. if __name__ == '__main__':
  33. app = QApplication(sys.argv)
  34. ex = Stacked()
  35. ex.show()
  36. sys.exit(app.exec_())

案例2:使用Eric6-Qtdesigner完成界面,再重写事件响应

效果如下:

参考:

https://www.cnblogs.com/jyroy/p/9457882.html
https://blog.csdn.net/La_vie_est_belle/article/details/84837174
https://www.cnblogs.com/zxpo/p/7562968.html

ps:

  用的结构是左边一个QListWidget + 右边QStackedWidget,将QWebEngineView加在QStackedWidget里面的QFrame里面(用的pyecharts做的数据可视化 生成的html文件,直接嵌入在GUI界面中)

注意:

PyQt5 最新版本之后统一使用 :

  1. from PyQt5.QtWebEngineWidgets import QWebEngineView

试了很多次 QStackedWidget.addWidget(self.browser)  总是出错,故在QStackedWidget 里面嵌套了一个QFrame,再把self.browser 添加到QFrame里面

  1. 解决 No module named PyQt5.QtWebKitWidgets
  2. 原因:在 PyQt 5.6(+) 版本中, 新增 QtWebEngineWidgets 代替QtWebKitWidgets

完整代码:

  1. # -*- coding: utf-8 -*-
  2.  
  3. # Form implementation generated from reading ui file 'D:\360Downloads\Python编程\数据分析+数据可视化\pyecharts\PyQt5+pyecharts\Qt设计师\Stack_Widget.ui'
  4. #
  5. # Created by: PyQt5 UI code generator 5.11.3
  6. #
  7. # WARNING! All changes made in this file will be lost!
  8.  
  9. from PyQt5 import QtCore, QtGui, QtWidgets
  10.  
  11. class Ui_Dialog(object):
  12. def setupUi(self, Dialog):
  13. Dialog.setObjectName("Dialog")
  14. Dialog.resize(967, 728)
  15. Dialog.setSizeGripEnabled(True)
  16. self.horizontalLayout_2 = QtWidgets.QHBoxLayout(Dialog)
  17. self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
  18. self.horizontalLayout_2.setSpacing(0)
  19. self.horizontalLayout_2.setObjectName("horizontalLayout_2")
  20. self.frame = QtWidgets.QFrame(Dialog)
  21. self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
  22. self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
  23. self.frame.setObjectName("frame")
  24. self.gridLayout = QtWidgets.QGridLayout(self.frame)
  25. self.gridLayout.setObjectName("gridLayout")
  26. self.stackedWidget = QtWidgets.QStackedWidget(self.frame)
  27. self.stackedWidget.setFrameShape(QtWidgets.QFrame.Box)
  28. self.stackedWidget.setObjectName("stackedWidget")
  29. self.page_1 = QtWidgets.QWidget()
  30. self.page_1.setObjectName("page_1")
  31. self.horizontalLayout = QtWidgets.QHBoxLayout(self.page_1)
  32. self.horizontalLayout.setObjectName("horizontalLayout")
  33. self.frame_1 = QtWidgets.QFrame(self.page_1)
  34. self.frame_1.setFrameShape(QtWidgets.QFrame.StyledPanel)
  35. self.frame_1.setFrameShadow(QtWidgets.QFrame.Raised)
  36. self.frame_1.setObjectName("frame_1")
  37. self.horizontalLayout.addWidget(self.frame_1)
  38. self.stackedWidget.addWidget(self.page_1)
  39. self.page_2 = QtWidgets.QWidget()
  40. self.page_2.setStyleSheet("background-color: rgb(255, 205, 255);")
  41. self.page_2.setObjectName("page_2")
  42. self.horizontalLayout_7 = QtWidgets.QHBoxLayout(self.page_2)
  43. self.horizontalLayout_7.setObjectName("horizontalLayout_7")
  44. self.frame_2 = QtWidgets.QFrame(self.page_2)
  45. self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
  46. self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
  47. self.frame_2.setObjectName("frame_2")
  48. self.horizontalLayout_7.addWidget(self.frame_2)
  49. self.stackedWidget.addWidget(self.page_2)
  50. self.page_3 = QtWidgets.QWidget()
  51. self.page_3.setStyleSheet("background-color: rgb(85, 255, 127);")
  52. self.page_3.setObjectName("page_3")
  53. self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.page_3)
  54. self.horizontalLayout_4.setObjectName("horizontalLayout_4")
  55. self.frame_3 = QtWidgets.QFrame(self.page_3)
  56. self.frame_3.setFrameShape(QtWidgets.QFrame.StyledPanel)
  57. self.frame_3.setFrameShadow(QtWidgets.QFrame.Raised)
  58. self.frame_3.setObjectName("frame_3")
  59. self.horizontalLayout_4.addWidget(self.frame_3)
  60. self.stackedWidget.addWidget(self.page_3)
  61. self.page_4 = QtWidgets.QWidget()
  62. self.page_4.setStyleSheet("background-color: rgb(255, 170, 127);")
  63. self.page_4.setObjectName("page_4")
  64. self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.page_4)
  65. self.horizontalLayout_5.setObjectName("horizontalLayout_5")
  66. self.frame_4 = QtWidgets.QFrame(self.page_4)
  67. self.frame_4.setFrameShape(QtWidgets.QFrame.StyledPanel)
  68. self.frame_4.setFrameShadow(QtWidgets.QFrame.Raised)
  69. self.frame_4.setObjectName("frame_4")
  70. self.horizontalLayout_5.addWidget(self.frame_4)
  71. self.stackedWidget.addWidget(self.page_4)
  72. self.page_5 = QtWidgets.QWidget()
  73. self.page_5.setStyleSheet("background-color: rgb(85, 170, 127);")
  74. self.page_5.setObjectName("page_5")
  75. self.horizontalLayout_6 = QtWidgets.QHBoxLayout(self.page_5)
  76. self.horizontalLayout_6.setObjectName("horizontalLayout_6")
  77. self.frame_5 = QtWidgets.QFrame(self.page_5)
  78. self.frame_5.setFrameShape(QtWidgets.QFrame.StyledPanel)
  79. self.frame_5.setFrameShadow(QtWidgets.QFrame.Raised)
  80. self.frame_5.setObjectName("frame_5")
  81. self.horizontalLayout_6.addWidget(self.frame_5)
  82. self.stackedWidget.addWidget(self.page_5)
  83. self.page_6 = QtWidgets.QWidget()
  84. self.page_6.setStyleSheet("background-color: rgb(255, 255, 127);")
  85. self.page_6.setObjectName("page_6")
  86. self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.page_6)
  87. self.horizontalLayout_3.setObjectName("horizontalLayout_3")
  88. self.frame_6 = QtWidgets.QFrame(self.page_6)
  89. self.frame_6.setFrameShape(QtWidgets.QFrame.StyledPanel)
  90. self.frame_6.setFrameShadow(QtWidgets.QFrame.Raised)
  91. self.frame_6.setObjectName("frame_6")
  92. self.horizontalLayout_3.addWidget(self.frame_6)
  93. self.stackedWidget.addWidget(self.page_6)
  94. self.page_7 = QtWidgets.QWidget()
  95. self.page_7.setStyleSheet("background-color: rgb(170, 170, 255);")
  96. self.page_7.setObjectName("page_7")
  97. self.horizontalLayout_8 = QtWidgets.QHBoxLayout(self.page_7)
  98. self.horizontalLayout_8.setObjectName("horizontalLayout_8")
  99. self.frame_7 = QtWidgets.QFrame(self.page_7)
  100. self.frame_7.setFrameShape(QtWidgets.QFrame.StyledPanel)
  101. self.frame_7.setFrameShadow(QtWidgets.QFrame.Raised)
  102. self.frame_7.setObjectName("frame_7")
  103. self.horizontalLayout_8.addWidget(self.frame_7)
  104. self.stackedWidget.addWidget(self.page_7)
  105. self.page_8 = QtWidgets.QWidget()
  106. self.page_8.setStyleSheet("background-color: rgb(255, 181, 182);")
  107. self.page_8.setObjectName("page_8")
  108. self.horizontalLayout_9 = QtWidgets.QHBoxLayout(self.page_8)
  109. self.horizontalLayout_9.setObjectName("horizontalLayout_9")
  110. self.frame_8 = QtWidgets.QFrame(self.page_8)
  111. self.frame_8.setFrameShape(QtWidgets.QFrame.StyledPanel)
  112. self.frame_8.setFrameShadow(QtWidgets.QFrame.Raised)
  113. self.frame_8.setObjectName("frame_8")
  114. self.horizontalLayout_9.addWidget(self.frame_8)
  115. self.stackedWidget.addWidget(self.page_8)
  116. self.page_9 = QtWidgets.QWidget()
  117. self.page_9.setStyleSheet("background-color: rgb(218, 186, 0);")
  118. self.page_9.setObjectName("page_9")
  119. self.horizontalLayout_10 = QtWidgets.QHBoxLayout(self.page_9)
  120. self.horizontalLayout_10.setObjectName("horizontalLayout_10")
  121. self.frame_9 = QtWidgets.QFrame(self.page_9)
  122. self.frame_9.setFrameShape(QtWidgets.QFrame.StyledPanel)
  123. self.frame_9.setFrameShadow(QtWidgets.QFrame.Raised)
  124. self.frame_9.setObjectName("frame_9")
  125. self.horizontalLayout_10.addWidget(self.frame_9)
  126. self.stackedWidget.addWidget(self.page_9)
  127. self.page_10 = QtWidgets.QWidget()
  128. self.page_10.setStyleSheet("background-color: rgb(255, 78, 81);")
  129. self.page_10.setObjectName("page_10")
  130. self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.page_10)
  131. self.horizontalLayout_11.setObjectName("horizontalLayout_11")
  132. self.frame_10 = QtWidgets.QFrame(self.page_10)
  133. self.frame_10.setFrameShape(QtWidgets.QFrame.StyledPanel)
  134. self.frame_10.setFrameShadow(QtWidgets.QFrame.Raised)
  135. self.frame_10.setObjectName("frame_10")
  136. self.horizontalLayout_11.addWidget(self.frame_10)
  137. self.stackedWidget.addWidget(self.page_10)
  138. self.gridLayout.addWidget(self.stackedWidget, 1, 2, 1, 1)
  139. self.listWidget = QtWidgets.QListWidget(self.frame)
  140. self.listWidget.setMaximumSize(QtCore.QSize(200, 16777215))
  141. self.listWidget.setObjectName("listWidget")
  142. item = QtWidgets.QListWidgetItem()
  143. self.listWidget.addItem(item)
  144. item = QtWidgets.QListWidgetItem()
  145. self.listWidget.addItem(item)
  146. item = QtWidgets.QListWidgetItem()
  147. self.listWidget.addItem(item)
  148. item = QtWidgets.QListWidgetItem()
  149. self.listWidget.addItem(item)
  150. item = QtWidgets.QListWidgetItem()
  151. self.listWidget.addItem(item)
  152. item = QtWidgets.QListWidgetItem()
  153. self.listWidget.addItem(item)
  154. item = QtWidgets.QListWidgetItem()
  155. self.listWidget.addItem(item)
  156. item = QtWidgets.QListWidgetItem()
  157. self.listWidget.addItem(item)
  158. item = QtWidgets.QListWidgetItem()
  159. self.listWidget.addItem(item)
  160. item = QtWidgets.QListWidgetItem()
  161. self.listWidget.addItem(item)
  162. self.gridLayout.addWidget(self.listWidget, 1, 0, 1, 1)
  163. self.line = QtWidgets.QFrame(self.frame)
  164. self.line.setFrameShape(QtWidgets.QFrame.VLine)
  165. self.line.setFrameShadow(QtWidgets.QFrame.Sunken)
  166. self.line.setObjectName("line")
  167. self.gridLayout.addWidget(self.line, 1, 1, 1, 1)
  168. self.label = QtWidgets.QLabel(self.frame)
  169. font = QtGui.QFont()
  170. font.setPointSize(16)
  171. font.setBold(True)
  172. font.setItalic(False)
  173. font.setWeight(75)
  174. self.label.setFont(font)
  175. self.label.setFrameShape(QtWidgets.QFrame.Box)
  176. self.label.setFrameShadow(QtWidgets.QFrame.Sunken)
  177. self.label.setLineWidth(1)
  178. self.label.setObjectName("label")
  179. self.gridLayout.addWidget(self.label, 0, 0, 1, 1, QtCore.Qt.AlignHCenter)
  180. self.label_2 = QtWidgets.QLabel(self.frame)
  181. font = QtGui.QFont()
  182. font.setPointSize(16)
  183. font.setBold(True)
  184. font.setItalic(False)
  185. font.setWeight(75)
  186. self.label_2.setFont(font)
  187. self.label_2.setFrameShape(QtWidgets.QFrame.Box)
  188. self.label_2.setFrameShadow(QtWidgets.QFrame.Sunken)
  189. self.label_2.setLineWidth(1)
  190. self.label_2.setObjectName("label_2")
  191. self.gridLayout.addWidget(self.label_2, 0, 2, 1, 1, QtCore.Qt.AlignHCenter)
  192. self.horizontalLayout_2.addWidget(self.frame)
  193.  
  194. self.retranslateUi(Dialog)
  195. self.stackedWidget.setCurrentIndex(0)
  196. QtCore.QMetaObject.connectSlotsByName(Dialog)
  197.  
  198. def retranslateUi(self, Dialog):
  199. _translate = QtCore.QCoreApplication.translate
  200. Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
  201. __sortingEnabled = self.listWidget.isSortingEnabled()
  202. self.listWidget.setSortingEnabled(False)
  203. item = self.listWidget.item(0)
  204. item.setText(_translate("Dialog", "Bar1"))
  205. item = self.listWidget.item(1)
  206. item.setText(_translate("Dialog", "Bar2"))
  207. item = self.listWidget.item(2)
  208. item.setText(_translate("Dialog", "Bar3D"))
  209. item = self.listWidget.item(3)
  210. item.setText(_translate("Dialog", "Boxplot(箱形图)"))
  211. item = self.listWidget.item(4)
  212. item.setText(_translate("Dialog", "EffectScatter(带有涟漪特效动画的散点图)"))
  213. item = self.listWidget.item(5)
  214. item.setText(_translate("Dialog", "Funnel(漏斗图) "))
  215. item = self.listWidget.item(6)
  216. item.setText(_translate("Dialog", "Gauge(仪表盘)"))
  217. item = self.listWidget.item(7)
  218. item.setText(_translate("Dialog", "Geo(地理坐标系)"))
  219. item = self.listWidget.item(8)
  220. item.setText(_translate("Dialog", "Graph(关系图)"))
  221. item = self.listWidget.item(9)
  222. item.setText(_translate("Dialog", "HeatMap(热力图)"))
  223. self.listWidget.setSortingEnabled(__sortingEnabled)
  224. self.label.setText(_translate("Dialog", "ListWidget"))
  225. self.label_2.setText(_translate("Dialog", "StackedWidget"))

界面代码

  1. # -*- coding: utf-8 -*-
  2. from PyQt5.QtCore import pyqtSlot,QUrl
  3. from PyQt5.QtWidgets import QDialog, QApplication,QHBoxLayout
  4. from PyQt5.QtWebEngineWidgets import QWebEngineView
  5. from Ui_Stack_Widget import Ui_Dialog
  6. import sys
  7.  
  8. class Dialog(QDialog, Ui_Dialog):
  9. def __init__(self, parent=None):
  10. super(Dialog, self).__init__(parent)
  11. self.setupUi(self)
  12.  
  13. frame_list = [self.frame_1,self.frame_2,self.frame_3,self.frame_4,self.frame_5,self.frame_6,self.frame_7,self.frame_8,self.frame_9,self.frame_10]
  14. for i in range(10):
  15. self.browser = QWebEngineView(self)
  16. self.browser.load(QUrl("file:///D:/360Downloads/Python编程/数据分析+数据可视化/pyecharts/PyQt5+pyecharts/Qt设计师/{}.html".format(str(i))))
  17. hboxlayout = QHBoxLayout(frame_list[i])
  18. hboxlayout.addWidget(self.browser)
  19.  
  20. self.listWidget.currentRowChanged.connect(self.stackedWidget.setCurrentIndex)
  21.  
  22. if __name__ == "__main__":
  23. app = QApplication(sys.argv)
  24. ui = Dialog()
  25. ui.show()
  26. sys.exit(app.exec_())

  

【微语】有趣的灵魂终会相遇, 无趣的灵魂渐行渐远 幸福也许会迟到 ,但永远不会缺席!

【PyQt5-Qt Designer】PyQt5+pyecharts 实现GUI界面的数据可视化展示的更多相关文章

  1. PyCharm+PyQt5+Qt Designer配置

    配置前提 因为本机已经配置完毕了,本次使用的是虚拟机中的Win7系统,Win10系统操作步骤完全一样,无任何区别 PyCharm (这个不多说,官网下载安装,我是用的是2019.3版本) Python ...

  2. PyQt5 & Qt Designer使用小结

    开始在知乎写文章的原因,主要还是想整理平时的经验,方便自己以后查看,有机会的话大家也可以交流吧. 11月中旬由于项目需要,和另一名实习生负责使用Python开发一个数据分析的小软件. 虽然才开始接触Q ...

  3. qt designer启动后不显示界面问题的原因与解决办法

    Qt 5.6.1无论是在vs里双击ui文件还是直接启动designer.exe都一直无法显示界面,但任务管理器中可以看到该进程是存在的.前几天还正常的,但昨天加了一块NVIDIA的显卡(机器自带核显) ...

  4. 痞子衡嵌入式:超级好用的可视化PyQt GUI构建工具(Qt Designer)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PyQt GUI构建工具Qt Designer. 痞子衡开博客至今已有好几年,一直以嵌入式开发相关主题的文章为主线,偶尔穿插一些其他技术 ...

  5. 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子

      本文介绍了如何使用技术栈PyCharm+Qt Designer+PyQt5来开发桌面软件,从环境搭建.例子演示到对容易混淆概念的解释.文中用到的全部软件+代码下载链接为:https://url39 ...

  6. [ PyQt入门教程 ] Qt Designer工具的使用

    Qt Designer是PyQt程序UI界面的实现工具,Qt Designer工具使用简单,可以通过拖拽和点击完成复杂界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用.本文 ...

  7. PyCharm+Qt Designer+PyUIC安装配置教程

    Qt Designer用于像VC++的MFC一样拖放.设计控件 PyUIC用于将Qt Designer生成的.ui文件转换成.py文件 Qt Designer和PyUIC都包含在PyQt5中,所以我们 ...

  8. python的部分GUI模块简介tkinter、pyqt5(Qt Designer)

    笔者认为,这两个作为Python3较为常用且简单的GUI模块,是Python开发者所必须学习至少是了解的. 其中tkinter为Python3自带的GUI模块,而pyqt5则需要通过pip insta ...

  9. pyqt5 在qt designer后以弹窗的方式连接多个UI图形界面

    当我们通过pyqt开发时,eric6为我们提供了一个方便的工具:图形化的绘制UI工具--qt designer. 我们可以通过它开发多个UI,然后利用信号-槽工具,将功能代码附着在上面.也可以将多个界 ...

随机推荐

  1. 嵌入式Linux内时区配置

    一般情况下,嵌入式Linux系统的时区,也是国际事件. 但是我们是属于东八区的时区,所以有一些时候要更改一下 TZ 变量可以配置时区,如下

  2. Top useful .Net extension methods

    Special extension methods were released in C# 3.0. Developers have continuously been looking for way ...

  3. c# 根据字段名,得到对象中的属性值

    public string GetModelValue(string FieldName, object obj) { try { Type Ts = obj.GetType(); object o ...

  4. 【转】在xcode5中修改整个项目名

    本文转载自:http://www.cnblogs.com/tbfirstone/p/3601541.html 总会遇到几个项目,在做到一半的时候被要求改项目名,网上找了下相关的资料,大多数是xcode ...

  5. 仿照支付宝账单界面--listview分组显示 用来做!发!财树充值交易明细

    QQ图片20150430155638.png (151.65 KB, 下载次数: 32)     下载链接: http://pan.baidu.com/s/1kVMY1SV 密码: i8ta

  6. 转:Python语言编程学习资料(电子书+视频教程)下载汇总

    开发工具: Python语言集成开发环境 Wingware WingIDE Professional v3.2.12 Python语言集成开发环境 Wingware WingIDE Professio ...

  7. SpringBoot thymeleaf使用方法,thymeleaf模板迭代

    SpringBoot thymeleaf使用方法,thymeleaf模板迭代 SpringBoot thymeleaf 循环List.Map ============================= ...

  8. Unity3D 优化NGUI纹理

    原理就是将一张rgba 32的分成两张纹理:一张平台压缩不带alpha和一张为原图1/4大小的压缩图存储alpha信息(用r分量当alpha值),然后修改原材质的Shader传入这两张纹理. 代码如下 ...

  9. 纯JS实现图片预览与等比例缩放和居中

    最近做项目时有一个需求,广告位图片上传时要预览,并且要等比例缩放和居中.已经保存的广告位图片显示时也要等比例缩放和居中.我使用了下面的代码实现,不过可能有一些小问题. <!DOCTYPE HTM ...

  10. FileInputFormat看这一段源码

    这是FileInputFormat中的一个方法,看一下它的功能,多看源码,理解hadoop,同时提高自己的java编程能力: private static String[] getPathString ...