A grayscale compensating method performed by a grayscale compensating apparatus, the grayscale compensating apparatus being configured to compensate grayscales for a self-luminous display, the self-luminous display comprising pixel units, wherein the method comprises: obtaining each driving voltage value corresponding to each grayscale signal of the pixel units of the self-luminous display; determining, according to intervals to which each driving voltage value belongs, each preset driving function corresponding to each driving voltage value, wherein each preset driving function is a relational expression between driving voltages and driving currents in each corresponding interval; determining, according to each preset driving function, first driving current values corresponding to each driving voltage value; detecting each second driving current value of the pixel units of the self-luminous display in case of being driven at each driving voltage value; determining, according to each preset driving function, differences between each first driving current value and each second driving current value, each compensating voltage value corresponding to each grayscale signal; wherein the determining, according to intervals to which each driving voltage value belongs, each preset driving function corresponding to each driving voltage value comprising: judging (S31a) whether each driving voltage value is greater than a preset threshold sequentially; determining (S31b), if yes, that a preset driving function corresponding to the driving voltage value is a first function; determining (S31c), if not, that a preset driving function corresponding to the driving voltage value is a second function; wherein: the first function is: I oled = 0.9848 ∗ V data 3 +37.502 ∗ V data 2 + V data +670.63; the second function is: I oled = 6.6 ∗ V data 3 -49.34 ∗ V data 2 +109.88 ∗ V data -60.006 wherein I oled is a driving current and V data is a driving voltage. obtaining each driving voltage value corresponding to each grayscale signal of the pixel units of the self-luminous display; determining, according to intervals to which each driving voltage value belongs, each preset driving function corresponding to each driving voltage value, wherein each preset driving function is a relational expression between driving voltages and driving currents in each corresponding interval; determining, according to each preset driving function, first driving current values corresponding to each driving voltage value; detecting each second driving current value of the pixel units of the self-luminous display in case of being driven at each driving voltage value; determining, according to each preset driving function, differences between each first driving current value and each second driving current value, each compensating voltage value corresponding to each grayscale signal; wherein the determining, according to intervals to which each driving voltage value belongs, each preset driving function corresponding to each driving voltage value comprising: judging (S31a) whether each driving voltage value is greater than a preset threshold sequentially; determining (S31b), if yes, that a preset driving function corresponding to the driving voltage value is a first function; determining (S31c), if not, that a preset driving function corresponding to the driving voltage value is a second function; judging (S31a) whether each driving voltage value is greater than a preset threshold sequentially; determining (S31b), if yes, that a preset driving function corresponding to the driving voltage value is a first function; determining (S31c), if not, that a preset driving function corresponding to the driving voltage value is a second function; wherein: the first function is: I oled = 0.9848 ∗ V data 3 +37.502 ∗ V data 2 + V data +670.63; the second function is: I oled = 6.6 ∗ V data 3 -49.34 ∗ V data 2 +109.88 ∗ V data -60.006 wherein I oled is a driving current and V data is a driving voltage. the first function is: I oled = 0.9848 ∗ V data 3 +37.502 ∗ V data 2 + V data +670.63; the second function is: I oled = 6.6 ∗ V data 3 -49.34 ∗ V data 2 +109.88 ∗ V data -60.006 wherein I oled is a driving current and V data is a driving voltage.