Fortunately I managed to do it. I only had to import my root widget's class from the main app's build method. In the following code AppBase is my root widget, MyApp is my main app and back_thread is the background thread.
class MyApp(App):
def build(self):
from Appbase import AppBase
base = AppBase()
return base
def run_app():
app = MyApp()
app.run()
if __name__ == '__main__':
back_thread = threading.Thread(target=run_app)
back_thread.setDaemon(True)
back_thread.start()