簡體   English   中英

python:如何監控變量? 變量改變時執行命令

[英]python: How to monitor a variable ? Execute command when variable change

我有一堂這樣的課


class WaveData(object):
    def __init__(self, data):
        self.data = data

並創建一個數據對象,繪制一個圖形

wave = WaveData([[1, 2, 3], 
                 [7, 5, 6]])

import matplotlib.pyplot as plt
fig=plt.figure()
plot1, = fig.canvas.figure.subplots().plot(wave.data[0])
plot2, = fig.canvas.figure.subplots().plot(wave.data[1])

我希望當我改變波值時,情節會同步變化

wave.data[1]=[5,6,7] # hope figure change together

我嘗試為WaveData類添加方法changedata ,但是:

  1. 它需要使用全局變量fig ,可能不合理(我可以把 fig 作為 self 屬性,但實際上, fig 還鏈接了其他沒有寫在這里的類對象)
  2. 我不能通過直接改變數據來改變figwave.data[1] =[5,6,7]
class WaveData(object):
    def __init__(self, data):
        self.data = data

    def changedata(self,value,index):
        self.data[index]=value
        

        #-- change the plot index th plot data--#
        global plot1,plot2,fig
        plot1.set_ydata(self.data[1])
        plot2.set_ydata(self.data[2])
        fig.canvas.draw_idle()
        #-- change the plot index th plot data--#
     

我想創建一個觀察者來監視wave.data值。 當檢測到值變化時,執行一些操作

怎么做?

右圖:繪圖不是一個動態的或交互式的過程。 您以正確的方式開始,使用訪問方法來更改波形。 現在您必須重新繪制並重新顯示結果......這可能需要手動關閉第一個繪圖,具體取決於您選擇的繪圖包(例如matplotlib )的界面。

要獲得完全交互的體驗,您可能需要使用動畫包,例如 PyGame,其中視覺顯示的變化是包假設的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM