城中城 发表于 2021-1-11 20:20:34

怎么在pyqt5 上刷新 折线图

如题有新的数据进来
然后 刷新图形

from PyQt5.QtWidgets import *
from test import Ui_UiView
import matplotlib
matplotlib.use("Qt5Agg")# 声明使用QT5
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from realTimeStockPicMoni import *



from threading import Thread
import time
from PyQt5 import sip
from threading import Timer

class MyFigure(FigureCanvas):
    def __init__(self, width=5, height=4, dpi=100):
      # 创建一个Figure
      self.fig = Figure(figsize=(width, height), dpi=dpi)
      # 在父类中激活Figure窗口
      super(MyFigure, self).__init__(self.fig)
      # 创建一个子图, 用于绘制图形用,111表示子图编号,如matlab的subplot(1,1,1)
      self.axes = self.fig.add_subplot(111)

class OpenView(QMainWindow, Ui_UiView):
    def __init__(self, time_code):
      self.time_code = time_code
      super(OpenView, self).__init__()
      self.setupUi(self)
      self.setWindowTitle('分时图数据')
      self.setMinimumSize(0, 0)
      self.gridlayout = QGridLayout(self.groupBox)# 继承容器groupBox

      self.show_df()

    def show_df(self):
      self.time_code = str(self.time_code) + '.csv'      # 获取文件名
      time_path = self.time_code.split('_')
      self.path = f'..\\data\\tick\\{time_path}\\{self.time_code}'
      print(self.path)

      self.all_tick = pd.read_csv(self.path)
      self.x = np.arange(0, self.all_tick.index[-1]+1)

      self.F = MyFigure(width=5, height=4, dpi=100)
      self.F.axes.plot(self.x, self.all_tick.close, self.x, self.all_tick.minu)
      self.F.axes.set_title("sincos")
      self.gridlayout.addWidget(self.F, 0, 1)



    def foo(self):
      time.sleep(2)
      if self.gridlayout.count() > 0:
            self.gridlayout.removeWidget(self.F)
            self.F.deleteLater()



    #
    #   time.sleep(2)
    #   self.F.axes.plot(self.x, self.all_tick.close, self.x, self.all_tick.minu)
    #   # self.gridlayout.addWidget(self.F, 0, 1)
    #   self.show()# 显示图片


      # time.sleep(0.5)





if __name__ == '__main__':
    app = QApplication(sys.argv)
    time_code = '20210111_000661'
    start = OpenView(time_code)
    start.show()

    t = Timer(5, start.foo)
    t.start()
    sys.exit(app.exec_())

有大佬能改吗   万分感谢

均昊山 发表于 2021-1-11 22:10:51

{:10_277:} while 接收
页: [1]
查看完整版本: 怎么在pyqt5 上刷新 折线图