Как снова и снова вызывать функцию save_loc в python - PullRequest
1 голос
/ 02 июля 2019

На save.onclicked я хочу перерисовывать график / рисунок снова и снова, пока я не закрою окно matplotlib.Но со следующим кодом

  1. При первом вызове save_locations данные записываются в CSV, а также обновляются данные.
  2. Но когда я делаю изменения во вновь обновленном графике, нажимаюкнопка сохранения местоположения ничего не делает.

Я пытался использовать цикл while в конце функции save_loc, используя переменные глобального флага, но результат не изменился.

   while(plot[0]==1 and check==1):
       callback = Index
       save_loc = plt.axes([0.8,0.00,0.1,0.03])
       save = Button(save_loc, 'Save Locations')
       save.on_clicked(callback.save_locations)
       plt.draw() #redraw

class Index:
    def save_locations(self): 
        global count
        count=count+1;          
        for i in range(nBus,maxVal):
            x[0].append("")
            x[1].append("")
            x[2].append("")
            x[3].append("")
            x[4].append("")
            x[5].append("")

        kneePoints = lengths[2]
        for i in range(kneePoints,maxVal):
            x[16].append("")
            x[17].append("")
            x[18].append("")

        extraPaths = lengths[3]
        for i in range(extraPaths, maxVal):
            x[19].append("")
            x[20].append("")

        nVol = lengths[4]                    
        for i in range(nVol, maxVal):
            x[21].append("")
            x[22].append("")

        for i in range(1,maxVal):
            x[23].append("")

        print(x)
        p = list(zip(*x))

        print("In save_loc function")
        print(p)            
        csv_write_database(p)

        z,maxVal2,pos,pos1,plot,colormap,labels,kneeEdges,kneeLabels,kneeDict,busDict,edge_label,edge_label1,edge_label2,n,e,lengths2 = read_csv_file()
        nBus2 = lengths2[0]
        plt.clf()

        g = nx.Graph()         

        nx.draw_networkx(g,pos,node_size=120,nodelist=n[0],node_color=colormap['765kV'],with_label='false',aplha =0.2)
        nx.draw_networkx(g,pos,node_size=120,nodelist=n[1],node_color=colormap['400kV'],with_label='false',aplha =0.2)
        nx.draw_networkx(g,pos,node_size=120,nodelist=n[2],node_color=colormap['220kV'],with_label='false',aplha =0.2)
        nx.draw_networkx(g,pos,node_size=120,nodelist=n[3],node_color=colormap['132kV'],with_label='false',aplha =0.2)
        nx.draw_networkx(g,pos,node_size=120,nodelist=n[4],node_color=colormap['110kV'],with_label='false',aplha =0.2)
        nx.draw_networkx(g,pos,node_size=120,nodelist=n[5],node_color=colormap['66kV'],with_label='false',aplha =0.2)
        nx.draw_networkx(g,pos,node_size=120,nodelist=n[6],node_color=colormap['33kV'],with_label='false',aplha =0.2) 
        nx.draw_networkx_labels(g,pos,labels,font_size=8,aplha =0.2)

        ax = fig.add_subplot(111)
        drs.clear()

        circles.clear()
        for i in range(0,nBus2):
            circles.append(patches.Circle((z[0][i],z[1][i]), 0.001,fc = 'g'))

        for circ in circles:
            ax.add_patch(circ)
            dr = DragThePoint(circ)
            dr.connect()
            drs.append(dr)

        print("COUNT : ",count)
        callback2 = Index2
        save_loc2 = plt.axes([0.8,0.00,0.1,0.03])
        save2 = Button(save_loc2, 'Save Locations')
        save2.on_clicked(callback2.save_locations2)
        plt.draw() #redraw
        while(plot[0]==1 and check==1):
            callback = Index
            save_loc = plt.axes([0.8,0.00,0.1,0.03])
            save = Button(save_loc, 'Save Locations')
            save.on_clicked(callback.save_locations)
            plt.draw()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...