Переменная не определена при обьявлении её глобальной
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