Python - How to Add a Text Field to the UI?
With a PropertyGroup and a PointerProperty you can register all your properties in the scene. They are then accessible by panels or operators under the name you've chosen.

The StringProperty allows you to set the subtype to FILE_PATH which creates a text field with a file selector. Once clicked this triggers Blender's file browser and the user can select a file. The path to the file is then stored in the property.

import bpy


class WorthGroupToolsSettings(bpy.types.PropertyGroup):
    file_path: bpy.props.StringProperty(name="File path",
                                        description="Some elaborate description",
                                        default="",
                                        maxlen=1024,
                                        subtype="FILE_PATH")


class WORTHGROUPTOOLS_PT_panel(bpy.types.Panel):
    bl_label = "WorthGroup Tools Panel"
    bl_category = "WorthGroup Tools Addon"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"

    def draw(self, context):
        layout = self.layout
        row = layout.row()

        worth_group_tools = context.scene.worth_group_tools
        row.prop(worth_group_tools, "file_path")


classes = (WorthGroupToolsSettings,
           WORTHGROUPTOOLS_PT_panel)


def register():
    for cls in classes:
        bpy.utils.register_class(cls)
    bpy.types.Scene.worth_group_tools = bpy.props.PointerProperty(type=WorthGroupToolsSettings)


def unregister():
    for cls in classes:
        bpy.utils.unregister_class(cls)
    del bpy.types.Scene.worth_group_tools


if __name__ == "__main__":
    register()