Вы можете использовать mulitprocessing.Queue
в качестве моста для передачи цвета кнопки из процесса в другой процесс:
import tkinter as tk
import multiprocessing as mp
import time
from itertools import cycle
def msgs(q):
''' process to send button color to main process periodically '''
colors = cycle(('red', 'green', 'blue', 'cyan', 'orange'))
while True:
q.put(next(colors))
time.sleep(3)
def check(q):
''' get color from queue and set button background to that color '''
try:
color = q.get(False)
btn.config(bg=color)
except:
# queue is empty
pass
btn.after(1000, check, q)
if __name__ == '__main__':
root = tk.Tk()
root.geometry('400x200')
btn = tk.Button(root, text='Hello')
btn.pack()
queue = mp.Queue() # create the shared queue
proc = mp.Process(target=msgs, args=(queue,), daemon=True)
proc.start()
check(queue)
root.mainloop()