Как встроить рисунокCanvasTkAgg в класс?Python

Программы на Python
Ответить
Anonymous
 Как встроить рисунокCanvasTkAgg в класс?

Сообщение Anonymous »

Чтобы уточнить, это вспомогательный вопрос для домашнего задания. Я уже начал это делать и упираюсь в кирпичную стену, когда дело доходит до его кодирования. Мы должны использовать то, что я сказал выше, для генерации синусоидального сигнала в графическом интерфейсе с некоторыми другими требованиями. Я думаю, что могу понять все остальное, я буквально просто не могу, хоть убей, заставить это генерироваться. Я пытаюсь вызвать класс для создания графика.
Я пытаюсь хотя бы заставить его рисовать таким образом.

Код: Выделить всё

import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

class SineWavePlotter:
def __init__(self, window):
self.window = window

window.title("SINE WAVE")
window.geometry('600x650')

frequencylabel = tk.Label(text="Enter Frequency Below",fg="black",bg="white")
frequencylabel.place(x=20, y=20)

amplitudelabel = tk.Label(text="Enter Amplitdue Below",fg="black",bg="white")
amplitudelabel.place(x=200, y=20)
textboxamp = tk.Entry(fg="black", bg="white", width=10)
textboxamp.place(x= 200, y =50)

windowlabel = tk.Label(text="Set Window Size Below",fg="black",bg="white")
windowlabel.place(x=370, y=20)
windowsize = 100
textboxwindow = tk.Entry(fg="black", bg="white", width=10)
textboxwindow.place(x= 370, y =50)

window = Figure(figsize=(5, 5), dpi=100)

graph = FigureCanvasTkAgg(figWindow, master=window)

graph.get_tk_widget().place(x = 20,y =80)
ax = figWindow.add_subplot()

window = tk.Tk()
Graph = SineWavePlotter(window)
window.mainloop()

Мой старый код, о котором профессор сказал мне, что это неправильный подход, выглядит так:

Код: Выделить всё

##Imports
from collections import deque
import time
import math
import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure

##Definitions
def Timer():
return(time.perf_counter())

TimeAxis = deque(maxlen=1000)

Output = deque(maxlen=1000)

AMP = 1.2

##GUI and Graphs
window = tk.Tk()
window.title("SINE WAVE")
window.geometry('600x650')

frequencylabel = tk.Label(text="Enter Frequency Below",fg="black",bg="white")
frequencylabel.place(x=20, y=20)

amplitudelabel = tk.Label(text="Enter Amplitdue Below",fg="black",bg="white")
amplitudelabel.place(x=200, y=20)
textboxamp = tk.Entry(fg="black", bg="white", width=10)
textboxamp.place(x= 200, y =50)

windowlabel = tk.Label(text="Set Window Size Below",fg="black",bg="white")
windowlabel.place(x=370, y=20)
windowsize = 100
textboxwindow = tk.Entry(fg="black", bg="white", width=10)
textboxwindow.place(x= 370, y =50)

figWindow = Figure(figsize=(5, 5), dpi=100)

graph = FigureCanvasTkAgg(figWindow, master=window)

graph.get_tk_widget().place(x = 20,y =80)
ax = figWindow.add_subplot()

##Buttons
def Start():
textvalueamp = textboxamp.get()
textvaluewindow = textboxwindow.get()
global AMP
global windowsize
AMP = textvalueamp
windowsize = textvaluewindow
return AMP
return windowsize

def Stop():
quit()

def Clear():
quit()

StartButton = tk.Button(text="Start",command = Start)
StartButton.place(x= 20, y = 600)

ExitButton = tk.Button(text="Stop",command = Stop)
ExitButton.place(x= 120, y = 600)

ClearButton = tk.Button(text="Clear",command = Clear)
ClearButton.place(x= 220, y = 600)

##Sine Wave
class Plotting:
def __init__(self, Time, YValue):
self.Time = Time
self.YValue = YValue

def Output(self, XValue):
YValue = math.sin(XValue)
return(YValue)

Time = deque(maxlen=100)
YValue = deque(maxlen=100)
i = 0
Y = 0
Graphing = Plotting(i,Y)
for i in range(10000):
YValue.append(Graphing.Output(i/3.14))
Time.append(i)

ax.plot(list(Time), list(YValue))
ax.set_xlabel("Time (S)")
ax.set_ylabel("Power (WATTS)")
ax.set_ylim(-1*AMP, AMP)
ax.set_title("Power over Time")
ax.grid(True)

window.mainloop()
Я пытаюсь заставить синусоидальную волну двигаться, и мне сказали это сделать, нужен первый подход. Я на самом деле не пытаюсь заставить кого-то делать за меня домашнее задание, я просто не понимаю, как все это работает. Что касается опыта, я не программировал уже несколько лет, поскольку моя работа этого не требует. Я стараюсь быстро всему переучиться.

Подробнее здесь: https://stackoverflow.com/questions/798 ... in-a-class
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»