Example #1
0
class Viewer(Frame):
    def __init__(self, xbnds=[-100, 100], ybnds=[-100, 100], zbnds=[-100, 100], master=None):
        Frame.__init__(self, master)
        self.master.title("matplot lib in tkinter example")
        self.pack(fill=BOTH, expand=1)
        leftFrame.pack(side=LEFT, expand=True, fill=BOTH)

        self.xMin = xbnds[0]
        self.xMax = xbnds[1]
        self.yMin = ybnds[0]
        self.yMax = ybnds[1]
        self.zMin = zbnds[0]
        self.zMax = zbnds[1]

        self.fig = Figure(figsize=(5, 5))
        self.ax = self.fig.add_subplot(111, projection='3d')
        self.ax.set_xlim3d(self.xMin, self.xMax)
        self.ax.set_ylim3d(self.yMin, self.yMax)
        self.ax.set_zlim3d(self.zMin, self.zMax)
        self.ax.set_xlabel('X', fontsize=10, rotation=0)
        self.ax.set_ylabel('Y', fontsize=10, rotation=0)
        self.ax.set_zlabel('Z', fontsize=10, rotation=0)

        self.plt1 = FigureCanvasTkAgg(self.fig, master=leftFrame)
        self.plt1.get_tk_widget().pack(side=TOP, fill=BOTH, expand=TRUE)
        self.plt1._tkcanvas.pack(side=LEFT, fill=BOTH, expand=True)
        self.plt1.mpl_connect('button_press_event', self.ax._button_press)
        self.plt1.mpl_connect('button_release_event', self.ax._button_release)
        self.plt1.mpl_connect('motion_notify_event', self.ax._on_move)
        print("Starting Window")

    def singlePoint(self, pt, col='g'):
        self.plt1.clf()
        self.ax = self.fig.add_subplot(self.subplt, projection='3d')
        self.ax.set_xlim3d(self.xMin, self.xMax)
        self.ax.set_ylim3d(self.yMin, self.yMax)
        self.ax.set_zlim3d(self.zMin, self.zMax)
        x = pt[0]
        y = pt[1]
        z = pt[2]
        print('x = ' + str(x) + '\t y =' + str(y) + '\t z =' + str(z))
        self.path = self.ax.scatter(x, y, z, color=col)
        self.plt1.draw()
        self.fig.canvas.flush_events()

    def pointsAndPath(self, pts, col):
        x = pts[0]
        y = pts[1]
        z = pts[2]
        print('x = ' + str(x) + '\t y =' + str(y) + '\t z =' + str(z))
        self.path = self.ax.plot(x, y, z, color=col)
        self.plt1.draw()
        self.fig.canvas.flush_events()