python - 如何在主应用程序 Pyqt 中插入产生其他线程的 matplotlib 图 ..?
问题描述
我想使用 Pyqt5 制作监控应用程序并使用线程检查状态。
当应用程序状态更改时制作情节。但情节是由应用程序制作的。我希望那是在 pyqt 应用程序中制作情节。
在查看我的代码下。
class WindowClass(QDialog):
def __init__(self) :
QDialog.__init__(self, None)
def test_6(self):
# thread is check for status changing
if is_thread_on == False:
schedule_thread = threading.Thread( target = self.scheduled )
schedule_thread.daemon = True
schedule_thread.start()
def scheduled(self):
schedule.clear()
schedule.every(15).seconds.do( self.process_check )
def new_print_plot(self):
for i in range( 0 , 10 ) ):
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.scatter( x = x_length , y = data )
canvas = FigureCanvas( fig )
canvas.draw()
self.horizontalLayout.addWidget( canvas )
canvas.show()
当你看到张贴的图片时。你可以很容易地理解我的目的。
请帮我。
import sys
import PyQt5
import pandas as pd
import os
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5.QtWidgets import QMessageBox
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
import schedule
import threading
import time
import matplotlib.pyplot as plt
push = 'C:\\Users\\dyd52\\Desktop\\pyqt_study\\200213_practice.ui'
class WindowClass(QDialog):
#global button_1
#button_1 = QPushButton('button1')
global is_thread_on
def __init__(self) :
QDialog.__init__(self, None)
uic.loadUi(push , self)
global is_thread_on
is_thread_on = False
#self.pushButton_hide1.hide()
#self.pushButton_hide2.hide()
#self.pushButton_hide3.hide()
self.pushButton.clicked.connect( self.putton_add )
self.pushButton_count.clicked.connect( self.count_button )
#self.gridLayout_main.itemAt(0).clicked.connect( self.clickmethod )
def putton_add(self):
global is_thread_on
data = pd.read_csv('C:\\Users\\dyd52\\Desktop\\pyqt_study\\200324_test.csv')
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.scatter( x = data['a'] , y = data['b'] )
canvas = FigureCanvas( fig )
canvas.draw()
self.horizontalLayout.addWidget( canvas )
canvas.show()
if is_thread_on == False:
schedule_thread = threading.Thread( target = self.moniter )
schedule_thread.daemon = True
is_thread_on = True
print(is_thread_on)
schedule_thread.start()
#self.pushButton_hide1.show()
#self.pushButton_hide1.setText( 'time to go home' )
def moniter(self):
schedule.clear()
print('moniter on ! ')
schedule.every(5).seconds.do( self.define_event )
while True:
schedule.run_pending()
time.sleep(1)
def define_event( self):
print('define_event on ! ')
for i in range( 0 , 3 ):
item = self.horizontalLayout.takeAt(0)
w = item.widget()
for i in range(0, 3):
data = pd.read_csv('C:\\Users\\dyd52\\Desktop\\pyqt_study\\200324_test.csv')
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.scatter( x = data['a'] , y = data['b'] )
canvas = FigureCanvas( fig )
canvas.draw()
self.horizontalLayout.addWidget( canvas )
canvas.show()
def count_button(self):
print( self.gridLayout_main.count() )
print( self.gridLayout_main.itemAt(0) )
def clickmethod(self):
QMessageBox.about(self, 'title' , 'message')
if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
解决方案
推荐阅读
- javascript - 使用正则表达式的 2 组之间没有字符
- node.js - 如何从旧的自制软件安装升级节点?
- python - How to resolve raise ValueError("bad input shape {0}".format(shape)); ValueError: bad input shape (977, 57)
- java - Java运行包含while循环的python文件
- express - 当我的猫鼬查询方法中抛出哪个错误时
- python - 如何查看 conda 包的摘要或描述?
- android - 在观察到 Livedata 更改后,ViewSwitcher 在初始化时不使用 .showNext() 切换视图
- r - R:在确切日期拆分时间序列 Intor 训练/测试
- reactjs - 失败的道具类型:提供给“ForwardRef(Grid)”的无效道具“children”
- azure-devops - 积压级别名称更改时的 Powerbi 和 Azure DevOps(在线版)报告