Доступ к виджету tkinter из другого процесса - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь что-то сделать с виджетом в моем GUI из другого процесса. Это чисто для производительности, так как у меня запущены некоторые вещи, которые занимают много времени, например, блокировка меньшего процесса, работающего на полную мощность, что мне нужно

Я пытался использовать Pipe для отправки данныхМне нужно выполнить основной процесс, а затем обновить виджет в основном процессе, однако в моем случае это работает недостаточно эффективно, потому что у меня есть 2 вещи, которые нужно поменять, и одна из них не требует времени, а другая -В течение долгого времени, оба они должны что-то делать с графическим интерфейсом, и программа сильно замедляется, потому что ожидает завершения длинного процесса recv(). В идеале оба процесса должны выполняться на полной скорости.

from tkinter import *
from multiprocessing import Process

def update(label):
    label.configure(text='on')

if __name__ == '__main__':
    root = Tk()

    label = Label(root, text='off')
    label.pack()

    p = Process(target=update, args=(label, ))
    p.start()

    root.mainloop()

Мне нужна метка, чтобы изменить текст с «выключено» на «включено». Когда этот код запускается, он выдает ошибку: TypeError: can't pickle _tkinter.tkapp objects. Я понимаю, почему это невозможно, но мне нужно найти способ обойти это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...