python - 如何从 python 应用程序运行 qt 小部件 pyqtgraph
问题描述
我在 tkinter 上运行的带有 GUI 的 python 应用程序运行良好。我需要从显示图形的 pyqtgraph 中实现 qt 小部件(大量数据,因此 matplot lib 无法做到这一点)。我导入需要的 Qt 东西:
import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui
并在 tkinter 类的某处以下代码在新窗口中打开它并显示图表:
def preview_show():
APP = QtGui.QApplication([])
## Define a top-level widget to hold everything
win = QtGui.QWidget()
## Create a grid layout to manage the widgets size and position
layout = QtGui.QGridLayout()
win.setLayout(layout)
pl = pg.PlotWidget()
pl.plot(self.DataSeries, pen=(255, 0, 0), name="Red curve")
layout.addWidget(pl)
win.show()
APP.exec_()
然后,这个小部件有一些功能可以通过右键单击图表来访问,我需要它们(比如导出图像)。但是,当我尝试单击其中任何一个功能时 - python 内核崩溃,错误代码为 255。我知道 qt 事件未得到处理。所以我尝试从python循环调用Qt事件处理程序,而不是调用APP.exec_():
while TRUE:
APP.processEvents()
time.sleep(0.002)
但它以相同的方式运行(带有图形的窗口打开,但在尝试访问其他内置函数时冻结)。我正在考虑在单独的线程中运行 Qt 小部件,但如果我不能在循环中执行此操作,那么我认为它也不会在线程中运行。
我读过这个Python 与 Qt、事件循环一起工作,但它对我不起作用。
所以问题是 - 如何在所有内置函数运行的情况下正确处理来自 tkinter 应用程序的 Qt 小部件(在单独的窗口中)?我对由 tkinter 应用程序处理错误的 qt 事件引起的问题是正确的吗?
解决方案
推荐阅读
- javascript - 在构建的 Vue 应用程序文件中查找命名函数
- python - 使用 huggingface 的 pytorch-transformers GPT-2 进行分类任务
- c++ - cuda内核调用/传递参数中的编译错误
- javascript - 当我尝试将一段 html 压缩到单独的页面并压缩它时不起作用
- python - 如何摆脱一行中的“+”?
- reactjs - 在 React Native 中为 TextInput 中的占位符提供样式
- java - Selenium chromedriver 无法点击 SVG 元素
- html - 将采用输入图像的 HTML 页面转换为采用文本的 HTML 页面
- javascript - MailApp.sendEmail 谷歌脚本函数
- oauth-2.0 - 如何使用授权码在 Postman 中模拟 oAuth 2.0 流程