Как вставить сюжет Matplotlib, который сделал другой поток в основном приложении Pyqt ..? - PullRequest
0 голосов
/ 24 марта 2020

Я хочу создать приложение для мониторинга с использованием 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()            

, когда вы видите опубликованную картинку. Вы можете легко понять мою цель.

, пожалуйста, помогите мне.

enter image description here

enter image description here


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_()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...