2017-09-27 10 views
0

OrbGuiClassは、2つの静的なローソク足チャートとTkinterのGUIを作成し、いずれかの更新機能を実行しません。データはcsvsから取得されます。そのため、コードはあなたのために実行されません。 3番目のグラフは、私が生きていたいトップレベルのグラフです。キャンバス、GUIなどの外部で動作しますが、GUI FuncAnimationは実行されていません。私はそれがクラスの外にある例を見ましたが、これはどちらもうまくいきません。更新ライブチャートは、プロットが表示されますが、一度か繰り返し

class OrbGuiClass: 
    def __init__(self,root): 
     self.root=root 
     self.frame1=tk.Frame(root) 
     self.day_data=[self.dt,self.o,self.h,self.l,self.c] 
     self.tenwty_four=[self.ddt,self.oo,self.hh,self.ll,self.cc] 
     self.create_canvas() 
     self.create_live_canvas() 
     self.frame1.grid(row=4,column=2) 
    def create_canvas(self): 
     self.fig=Figure(figsize=(8,4)) 
     self.ax1=self.fig.add_subplot(121,title='24 Hour Chart') 
     self.ax2=self.fig.add_subplot(122,title='Day Chart') 
     candlestick2_ochl(self.ax1,self.oo[9:len(self.oo)], 
     self.hh[9:len(self.hh)],self.ll[9:len(self.ll)], 
     self.cc[9:len(self.cc)]) 
     candlestick2_ochl(self.ax2,self.o,self.h,self.l,self.c) 
     self.canvas = FigureCanvasTkAgg(self.fig, master=root) 
     self.canvas.get_tk_widget().grid(row=1,column=0,  
     columnspan=2,rowspan=2,sticky="ne") 
     self.canvas.show() 
    def create_live_canvas(self): 
     toplevel = tk.Toplevel() 
     self.fig2=Figure(figsize=(4,4), dpi=100) 
     self.ax=self.fig2.add_subplot(111) 
     self.canvas2 = FigureCanvasTkAgg(self.fig2, toplevel) 
     self.canvas2.show() 
     self.canvas2.get_tk_widget().pack() 
     self.anim=animation.FuncAnimation 
     (self.fig2,self.update,frames=100,interval=25) 
    def update(self, dummy): 
     #get_data() is a web crawling function that returns OHLC values 
     O,H,L,C= get_data() 
     self.ax=plt.gca() 
     self.ax.clear() 
     self.ax.set_xlim([-.5,.5]) 
     candlestick2_ohlc(self.ax,O,H,L,C,width=.2, 
     colorup='g',colordown='r',alpha=1.0) 

root = tk.Tk() 
app=OrbGuiClass(root) 
root.mainloop() 
+0

アニメーションを作成する前に、FigureのキャンバスをGUIに配置して表示する必要があります。今、あなたは自転車用の部品​​をいくつか持っており、フェラーリの作り方を尋ねています。あなたのコードはそのまま実行されず、あなたを助けてくれません。 –

+0

コードを見れば、なぜそれが動作しないのかわかりません。したがって、問題自体は実際には明らかではありません。コードも[mcve]ではないので、潜在的な障害の原因を判断することは実際には不可能です。写真にとどまるには、車輪なしでフォードを工場に持ってきて、エンジンに問題があるかどうか聞いてみましょう。 – ImportanceOfBeingErnest

+0

私は、最小、完全、および検証可能なサンプルレコードを確認し、問題を再現するコードを更新します。意味をなさないこれに新しいので、私をよろこんでください。 –

答えて

0

私は仕事にこれを取得することを考え出すことができるの周りだけの仕事は(plt.figureを使用してクラス上の別の図を作成することです)、以下FuncAnimationを実行し、その後plt.show()。また、これを動作させるには、プログラムの先頭にtoplevel = tk.Toplevel()を含める必要があり、guiは複数のウィンドウに表示されます。だから私は一緒にテープを持っているが、私はフェラーリを夢見ていた。ああ、現実。私はそれとトップレベルを(置く場所他の賢明なあなたの男が分離されるので、ルート= tk.Tk()とアプリ= OrbGuiClass(ルート)の下))あなたは(plt.figureを入れていることを確認します。

class OrbGuiClass: 
    def __init__(self,root): 

    def create_canvas(self): 
     self.fig=Figure(figsize=(8,4)) 

root = tk.Tk() 
app=OrbGuiClass(root) 

toplevel=tk.Toplevel() 

fig2=plt.figure() 
ax=fig2.add_subplot(111) 
def update(dummy): 
    O,H,L,C= get_data() 
    ax=plt.gca() 
    ax.clear() 
    ax.set_xlim([-.5,.5]) 
    candlestick2_ohlc(ax,O,H,L,C,width=.2, 
    colorup='g',colordown='r',alpha=1.0) 
ani=animation.FuncAnimation(fig2,update,frames=100,interval=3000) 
plt.show() 
root.mainloop() 
関連する問題