Следующий код работает, вы можете просто скопировать / вставить:
from tkinter import *
import multiprocessing
startingWin = Tk()
def createClientsWin():
def startProcess():
clientsWin = Tk()
label = Label(clientsWin, text="Nothing to show")
label.grid()
clientsWin.mainloop()
if __name__ == "__main__":
p = multiprocessing.Process(target=startProcess)
p.start()
button = Button(startingWin, text="create clients", command=lambda: createClientsWin())
button.grid()
startingWin.mainloop()
Так что я просто хочу создать полностью отделенное окно Tk()
с использованием многопроцессорной обработки.Когда я нажимаю кнопку «Создать», я просто получаю исходное окно (а не предполагаемое), и оно дает мне такую ошибку:
AttributeError: Can't pickle local object 'createClientsWin.<locals>.startProcess'
* Может кто-нибудь объяснить, какзапустить отдельное новое окно Tk (), используя многопроцессорность?*
Обновление: не дубликат
Даже если я буду следовать решению, приведенному в возможном дублировании вопроса, это не поможет решить мой вопрос.Просто потому, что в моем случае используется Tkinter.Модифицированный код:
def createClientsWin():
clientsWin = Tk()
label = Label(clientsWin, text="Nothing to show")
label.grid()
clientsWin.mainloop()
def createClientsWinProcess():
if __name__ == "__main__":
p = multiprocessing.Process(target=createClientsWin)
p.start()
startingWin = Tk()
button = Button(startingWin, text="create clients", command=lambda: createClientsWinProcess())
button.grid()
startingWin.mainloop()