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