по кнопке должен открываться canvas и надо чтобы он прокручивался. Он появляется но не прокручивается.
Если закомментировать строку 21(та которая комментарием в данный момент) выходит ошибка:
AttributeError: 'Main' object has no attribute 'resCanvas'
import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import numpy as np
class Main(tk.Frame):
def __init__(self, root):
super().__init__(root) #инициализация класса
self.init_main()
def init_main(self):
toolbar = tk.Frame(bg='#d0d8e0', bd=2)
toolbar.place(x=0,y=0,relwidth=1.0,height=30)
self.toolbarForCanvas=tk.Frame(bg='#d7d8e8', bd=2)
self.toolbarForCanvas.place(x=0,y=31,width=600,height=570)
self.scrollBarGraph=tk.Scrollbar(master=self.toolbarForCanvas,orient=tk.VERTICAL)
self.scrollBarGraph.place(x=585,y=0,width=15,relheight=1.0)
#self.resCanvas=tk.Canvas(master=self.toolbarForCanvas,yscrollcommand=self.scrollBarGraph.set,scrollregion=(0,0,585,1200))
self.scrollBarGraph.config(command=self.resCanvas.yview)
toolbarForLabel=tk.Frame(bg='#d7d0e0',bd=2, width=600,height=2000)
toolbarForLabel.place(x=601,y=31,width=400,height=570)
AM=tk.Label( toolbarForLabel,text='Amplitude:......')
AM.place(x=0,y=0,width=150,height=30)
FR=tk.Label( toolbarForLabel,text='Frecuency:......')
FR.place(x=0,y=31,width=150,height=30)
btnOpenDialog = tk.Button(toolbar, text='open', command=self.draw, bg='#d7d8e0', bd=0, compound=tk.TOP)
btnOpenDialog.place(x=900,y=0,width=50,height=30)
btnSaveDialog = tk.Button(toolbar, text='save', command=self.save, bg='#d7d8e0', bd=0, compound=tk.TOP)
btnSaveDialog.place(x=0,y=0,width=40,height=30)
self.txtToEntryName=tk.Entry(toolbar,width=20)
self.txtToEntryName.place(x=45,y=0,width=100,height=30)
self.lablTime=tk.Label(toolbar,text='time:......',padx=60)
self.lablTime.place(x=150,y=0,width=100,height=30)
def save(self):
s="EEG.jpg"
s=self.txtToEntryName.get()
plt.savefig(s,dpi=300)
def draw(self):
data=[]
t=1/2000
fig=plt.figure()
plot=['0H',"1M",'2C1','3C2','4C3','5C4','6C5','7C6','8w1','9w2','10w3','11w4','12w5','13w6','14R','15L']
for i in range(16):
data.append([])
with open(f"/home/biotech/Documents/EEG/gur1/sinh{plot[i]}.txt",'r') as q:
for w in q.readlines():
data[i].append(float(w[:-2]))
plt.axhline(-0.1-(1.5*i),0,2*t*len(data[i]),color="black")
Y=np.array(data[i])
X=np.linspace(0,t*len(Y),len(Y))
plt.scatter(X,Y-(1.5*i),s=1,color="black")
self.y=str(t*len(Y))[:5]
canvas= FigureCanvasTkAgg(fig, master=self.toolbarForCanvas) # A tk.DrawingArea.
canvas.draw()
self.resCanvas=canvas.get_tk_widget()
self.resCanvas.config(yscrollcommand=self.scrollBarGraph.set,scrollregion=(0,0,585,1200))
self.resCanvas.place(in_=self.toolbarForCanvas ,x=0,y=0,width=585,height=570)
self.lablTime.config(text='time:'+self.y)
if __name__ == "__main__":
root = tk.Tk() #создание окна
app = Main(root) #объект класса
app.place() #размещение класса в окне
root.title("EEG ver.gragh.1.1") #название
root.geometry("1000x600") #размер
root.resizable(False, False) #запрет на изменение размера
root.mainloop() #вызов окна
открытие canvas прописано в функции draw