【发布时间】:2019-05-06 21:49:52
【问题描述】:
我有 3 个班级,mainwindow class、plot class 和 Listxy class。我想将class Listxy 中的X 和Y 列表连接到class Plot 以绘制数据。我想将它们连接到mainwindow class 和class plot 将根据X 和Y lists 进行更新。即x = [x for x in X] 和y = [y for y in Y]。我不太确定,该插槽和信号是否适用于列表。我需要帮助。
可视化:
代码:
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
import matplotlib.pyplot as plt
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
class Mainwindow(QtWidgets.QMainWindow):
def __init__(self):
super(Mainwindow, self).__init__()
self.setMinimumSize(QtCore.QSize(1200,800))
self.setWindowTitle('My Graphic Window')
self.list_x_y = Listxy()
self.plotview = Plot()
self.setCentralWidget(self.plotview)
class Plot(QtWidgets.QWidget):
def __init__(self):
super(Plot, self).__init__()
self.initializewidget()
self.plot1()
def initializewidget(self):
self.setWindowTitle("Plotting M&N")
gridlayout = QtWidgets.QGridLayout()
self.setLayout(gridlayout)
self.figure = plt.figure(figsize=(15,5))
self.canvas = FigureCanvas(self.figure)
self.toolbar = NavigationToolbar(self.canvas,self)
gridlayout.addWidget(self.canvas,1,0,1,2)
gridlayout.addWidget(self.toolbar,0,0,1,2)
def plot1(self):
ax = self.figure.add_subplot(111)
x = [i for i in range(100)]
y = [i**2 for i in x]
# x = [0]
# y = [0]
ax.plot(x,y, 'y.-')
ax.set_title('Quadratic Plot')
self.canvas.draw()
class Listxy:
X = []
Y = []
def createdata(self):
for x in range(0,100):
X.append(x)
for y in range(0,100):
Y.append(y)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
im = Mainwindow()
im.show()
sys.exit(app.exec_())
【问题讨论】:
标签: python python-3.x matplotlib pyqt pyqt5