Я хочу показать экземпляр Line2D в Qt4 Widget. Но когда я запускаю код, он просто показывает пустую цифру.Как показать Line2D в Qt4 Widget
Вот мой код.
import sys
from PyQt4 import QtGui
import numpy as np
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.lines import Line2D
class Qt4MplCanvas(FigureCanvas):
"""Class to represent the FigureCanvas widget"""
def __init__(self, parent):
# plot definition
self.fig = Figure()
self.axes = self.fig.add_subplot(111)
x = [1,1]
y=[2,2]
self.line = Line2D(x, y, marker = 'o', markerfacecolor = 'r', animated = True)
self.axes.add_line(self.line)
self.axes.set_xlim((0,3))
self.axes.set_ylim((0,3))
# initialization of the canvas
FigureCanvas.__init__(self, self.fig)
# set the parent widget
self.setParent(parent)
# we define the widget as expandable
FigureCanvas.setSizePolicy(self,
QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Expanding)
# notify the system of updated policy
FigureCanvas.updateGeometry(self)
class ApplicationWindow(QtGui.QMainWindow):
"""Example main window"""
def __init__(self):
# initialization of Qt MainWindow widget
QtGui.QMainWindow.__init__(self)
# set window title
self.setWindowTitle("Matplotlib Figure in a Qt4 Window With NavigationToolbar")
# instantiate a widget, it will be the main one
self.main_widget = QtGui.QWidget(self)
# create a vertical box layout widget
vbl = QtGui.QVBoxLayout(self.main_widget)
# instantiate our Matplotlib canvas widget
qmc = Qt4MplCanvas(self.main_widget)
# instantiate the navigation toolbar
vbl.addWidget(qmc)
# set the focus on the main widget
self.main_widget.setFocus()
# set the central widget of MainWindow to main_widget
self.setCentralWidget(self.main_widget)
# create the GUI application
qApp = QtGui.QApplication(sys.argv)
# instantiate the ApplicationWindow widget
aw = ApplicationWindow()
# show the widget
aw.show()
# start the Qt main loop execution, exiting from this script
# with the same return code of Qt application
sys.exit(qApp.exec_())
В моем коде есть два класса. класс Qt4MplCanvas используется для рисования фигуры Line2D. class ApplicationWindow должен написать окно и добавить на него виджет.
Большое спасибо за чтение моего кода. Я был озадачен проблемой в течение нескольких дней, пока вы не помогли мне. Но я до сих пор не знаю, что значит анимировать. Приведенный выше пример - это тот, который я научился писать свой код. Теперь я думаю, что проблема заключается в том, как использовать Line2D. Но мало документов и примеров можно найти. –