Переменная не определена при обьявлении её глобальной

Python 3.10.11

Есть графическая программа tkinter, которая запускает другую, на pygame в отдельном процессе. Проблема в том, что прямо из аргумента command tkinter Button я не могу запустить процесс. У меня выходит либо Неверный дескриптор, либо Ran out of input (или как-то так). И я решил запускать процесс за классом в функции run_demo(). Вот собственно файл Main.py с tkinter программой.

Дальше она запускается, но мне нужно иметь непосредственный доступ к переменным класса Demo. Они описаны в Demo.py. Но даже когда я делаю переменную demo глобальной, она не появляется в globals()

Main.py

from Demo import Demo

from multiprocessing import Process

import tkinter as tk


def run_demo(size = (0,0), display = 0, fps = 60):
    global demo
    demo = Demo(size, display, fps)
    demo.run()

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.wm_title("App")
        self.wm_geometry("400x300")
        self.wm_resizable(False, False)

        self.launch_btn = tk.Button(text="Launch", command=self.run_demo)
        self.launch_btn.pack()

        self.update_something()

    def update_something(self):
        if "demo" in globals().items(): print("DEMO IN GLOBALS") #Этого принта никогда не будет
        self.after(50, self.update_something)

    def run_demo(self):
        #Здесь получаем аргументы запуска демо
        demo_process = Process(target=run_demo, daemon=True) #Указываем их в args=(size,) и т.д.
        demo_process.start()


if __name__ == "__main__":
    App().mainloop()

Demo.py

class Demo:
    def __init__(self, size, display, fps):
        self.size = size
        self.display = display
        self.fps = fps

    def run(self):
        self.running = True
        while self.running:
            pass

Ответы (0 шт):