Dibujo cosinus

Me gustaría hacer un progtwig que dibuje un gráfico de cosinus en el rango ordenado. Pero hay un error que no puedo reparar. Mensaje de error: “z = int (self.entry.get ()) AttributeError: la instancia del progtwig no tiene ninguna entrada de atributo” Aquí está mi código:

# -*- coding: utf-8 -*- from Tkinter import Tk, W, E from ttk import Label, Button, Frame, Entry,Style import math import sys import matplotlib as mp class program(Frame): def __init__(self,main): Frame.__init__(self,main) self.main = main self.initUI() def initUI(self): self.main.title('COSINUSEK') Style().configure('TFrame', background = 'black') Style().configure('TLabel', background = 'black', foreground = 'blue') Style().configure("TButton", background = 'red', foreground = 'blue') self.rowconfigure(0, pad = 3) self.rowconfigure(1, pad = 3) self.rowconfigure(2, pad = 3) self.rowconfigure(3, pad = 3) self.rowconfigure(4, pad = 3) self.columnconfigure(0,pad =3) self.columnconfigure(1,pad =3) self.columnconfigure(2,pad =3) self.columnconfigure(3,pad =3) self.columnconfigure(4,pad =3) label = Label(self, text = 'Podaj zakres w stopniach').grid(row = 0,column = 3) od = Label(self, text = ' OD').grid(row = 1, column =0) do = Label(self, text = ' DO').grid(row = 1, column =4 ) entry = Entry(self, justify = 'center').grid(row = 2,column = 0,columnspan = 2 ,sticky = E+ W) entry1 = Entry(self, justify = 'center').grid(row = 2,column = 4,columnspan = 2, sticky = E) button = Button(self, text = 'Ok',command = self.ok).grid(row = 3,column = 3) button1 = Button(self, text = 'Draw', command = self.dra).grid(row = 4, column = 3) self.pack() def run(self): self.main.mainloop() def ok(self): x = [] y = [] z = int(self.entry.get()) w = int(self.entry1.get()) i = w while i in range(w,z): x.append(i) for a in x: y[a] = math.cos((x[a]*math.pi)/180) i = i + 0.01 def dra(self): self.mp.ion() self.mp.plot(self.x,self.y) self.mp.title('Wykres') self.mp.xlabel('x') self.mp.ylabel('y') self.mp.draw() program(Tk()).run() 

Reemplazar:

 entry = Entry(self, justify = 'center').grid(row = 2,column = 0,columnspan = 2 ,sticky = E+ W) entry1 = Entry(self, justify = 'center').grid(row = 2,column = 4,columnspan = 2, sticky = E) 

a

 self.entry = Entry(self, justify = 'center') self.entry.grid(row = 2,column = 0,columnspan = 2 ,sticky = E+ W) self.entry1 = Entry(self, justify = 'center') self.entry1.grid(row = 2,column = 4,columnspan = 2, sticky = E) 

De lo contrario, en la línea z = int(self.entry.get()) , self.entry no existiría. Además, el método de la grid no devuelve nada, así que si haces todo en una línea como lo hiciste, pierdes tu objeto de Entry y no afecta a la entry .

Al hacer las variables, tendrás que establecerlas como variables de instancia:

  self.entry = Entry(self, justify = 'center').grid(row = 2,column = 0,columnspan = 2 ,sticky = E+ W) self.entry1 = Entry(self, justify = 'center').grid(row = 2,column = 4,columnspan = 2, sticky = E)