にmatplotlibのを埋め込みます。それから私がそれを閉じると、フルスクリーンのtkinterアプリケーションが開き、コーナーに背景画像と更新クロックが表示されます。私が何をしたいのですか?プログラムを起動すると、フルスクリーンのtkinterアプリケーションが開いて、背景の画像、更新中の時計、、の中にmatplotlibのグラフが表示されます。基本的に私はアプリケーションにmatplotlibグラフを埋め込みたいと思っています。グラフコードを自分のクラスに入れて呼び出すことを試みましたが、これは前述の結果を示しています。は、私は起動時にビットコイン価格のmatplotlibのグラフを開き、価格変更するたびに更新するプログラムを持っているのTkinterアプリケーション
canvas = FigureCanvasTkAgg(fig, self) canvas.show() canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=True)
が、その後プログラムは全く起動していなかった。私はこれでplt.show()
を交換してみました。私がスクリプトに入れた場所に関係なく、私が直接plt.show()
をそれに置き換え、クラスに統合しようとしたときに '' canvas 'が定義されていない' '自分自身が定義されていない'ここでは、以下の完全なコードは次のとおりです。
from tkinter import *
from PIL import ImageTk, Image
import os
import time
import requests
import tkinter as tk
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import matplotlib.animation as animation
from matplotlib import style
from tkinter import ttk
import urllib
import json
import pandas as pd
import numpy as np
from PyQt5 import QtWidgets
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
class App(tk.Tk):
def __init__(self):
# call the __init__ method of Tk class to create the main window
tk.Tk.__init__(self)
# background image
img = ImageTk.PhotoImage(Image.open("0.png"))
panel = Label(self, image=img)
panel.pack()
# clock
self.label = tk.Label(self, text="", font=('comic',50,'bold'),
bg='#464545', fg='#1681BE')
self.label.place(height=204, width=484, x=1384, y=824)
self.update_clock()
# window geometry
w, h = self.winfo_screenwidth(), self.winfo_screenheight()
self.geometry("%dx%d+0+0" % (w, h))
self.overrideredirect(True)
self.mainloop()
def update_clock(self):
now = time.strftime('%H:%M:%S')
self.label.configure(text=now)
self.after(1000, self.update_clock)
def animate(self):
dataLink = 'https://btc-e.com/api/3/trades/btc_usd?limit=2000d'
data = urllib.request.urlopen(dataLink)
data = data.read().decode("utf-8")
data = json.loads(data)
data = data["btc_usd"]
data = pd.DataFrame(data)
buys = data[(data['type']=="ask")]
buys["datestamp"] = np.array(buys["timestamp"]).astype("datetime64[s]")
buyDates = (buys["datestamp"]).tolist()
plot(buyDates, buys["price"])
xlabel('time')
ylabel('Temperature')
title('Temperature Chart')
grid(True)
ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()
app = App()
背景画像であり、もちろん、多くのモジュールが、任意のフィードバックが非常に高く評価されるだろう「0.png」のようないくつかの信頼性のがあります。
私はこれを言及しなかったが、私のpython 3.5.2 –
を使用していて申し訳ありません「しかし、それはどちらか動作しませんでした。」十分な問題の説明ではありません。あなたが表示するコードには、決して使用されない 'FigureCanvasTkAgg'のインポートから*そこにキャンバスと関係があります*がありません。これは、実際の問題であなたを助けることが不可能になります。 (再)[ask]を読むことを検討してください。その下にコメントを書くのではなく、あなたの質問を編集することができます。 – ImportanceOfBeingErnest