TypeError: unsupported operand type(s) for -: 'int' and 'Button'

I’m trying to learn the gui system but i can’t figure out why i am getting this error. Here is the code if someone could help me.

Thanks.

#!BPY
import Blender, math
from Blender import Scene, Mesh, Draw, BGL
from math import *

umin = 0
umax = 2
vmin = 0
vmax = 2

ustep = 32
vstep = 32

points = []
faces = []

def makeparam():
    scn = Scene.GetCurrent()
    uverstep = (umax - umin) / float(ustep)
    vverstep = (vmax - vmin) / float(vstep)
    me = Mesh.New()
    for u1 in range(ustep):
        u = umin + uverstep * u1
        for v1 in range(vstep):
             v = vmin + vverstep * v1
            x = cos(u*pi)*sin(v*pi)
            y = sin(u*pi)*sin(v*pi)
            z = cos(pi*v)
            points.append([x,y,z])
    
    me.verts.extend(points)
    
    for uf in range(ustep-1):
        for vf in range(vstep-1):
            f1 = uf + ustep * vf
            f2 = f1 + 1
            f3 = (f1 + 1) + ustep
            f4 = f1 + ustep
            
            faces.append([f1,f2,f3,f4])
            
    me.faces.extend(faces)
    ob = scn.objects.new(me,"Grid")
    ob.select(1)
    Blender.Redraw()

GEN = 1
QUIT = 2
    
def draw_gui():
    global umin
    BGL.glRasterPos2i(5, 275)
    Draw.Text("Stuf")
    umin = Draw.Number("U min: ", 3, 5, 40, 100, 25, 0, -99999, 99999, "sdf")
    Draw.PushButton("Create", GEN, 5, 5, 60, 25, "sf")
    Draw.PushButton("Quit", QUIT, 80, 5, 60, 25, "dfs")

def event(event, val):
    if event == Draw.ESCKEY:
        Draw.Exit()
    
def button_event(evt):
    if evt == GEN :
        makeparam()
    elif evt == QUIT :
        Draw.Exit()
        
Draw.Register(draw_gui, event, button_event)

I recon somewhere (it should give the line nr in the error message) you should have used a float in stead of an int.

The problem is, as the error suggests, that you’re trying to substract a button from an integer. On line 27, you typed:
uverstep = (umax - umin) / float(ustep)
however in the draw_gui function you typed:
umin = Draw.Number("U min: ", 3, 5, 40, 100, 25, 0, -99999, 99999, “sdf”)
The function Draw.Number returns a handle to a button, not the value of that button. Instead, you should create an extra global variable uminbutton and replace the above line with
uminbutton = Draw.Number("U min: ", 3, 5, 40, 100, 25, 0, -99999, 99999, “sdf”)
and add
umin = uminbutton.val
to the button_event function.
See if that works.