You can use AtlasTexture for this.
Your code would look something like this:
var texture = _tile_map.tile_set.tile_get_texture(id)
var region_to_crop = Rect2(0, 0, 128, 128)
var atlas_texture = AtlasTexture.new()
atlas_texture.set_atlas(texture)
atlas_texture.set_region(region_to_crop)
btn.texture_normal = atlas_texture
An alternative way to write the same code:
func your_function_here():
var texture := _tile_map.tile_set.tile_get_texture(id)
var region_to_crop := Rect2(0, 0, 128, 128)
btn.texture_normal = get_cropped_texture(texture, region_to_crop)
func get_cropped_texture(var texture : Texture, var region : Rect2) -> AtlasTexture:
var atlas_texture = AtlasTexture.new()
atlas_texture.set_atlas(texture)
atlas_texture.set_region(region)
return atlas_texture