Обновление tk экрана после закрытие дочернего окна по кнопке OK

Моя программа с помощью запросов к БД SQLite, формирует список кнопок при нажатии на которые пользователю открывается дочернее окно с формой для заполнения. После заполнения формы и нажатия кнопки Ok, форма для заполнения закрывается. Необходимо чтобы родительское окно обновилось (после данного обновления родительское окно не будет содержать нажатую ранее кнопку).

P.S родительский экран не стартовый (программа запускается не с него)

класс №1 запрос к БД и вывод списка удовлетворяющего условию на экран на экран

class PurchaseClient2 :
    def __init__(self, master):
        self.master=master
        array=CheckButtonOn.functionOutputInformationPurchaseForClient(self)
        if (len(array)==0):
            self.labelPurchaseNull=tk.Label(self.master, text=String.textNullResult, font="Century 14", bg=Color.colorMainWindow)
            self.labelPurchaseNull.grid(column=0, row=1, columnspan=5, pady=10, padx=100)
        else :
            for i in range (0, len(array), 1):
                self.buttonNewPurchase=tk.Button(self.master, text=String.textSayPay+str(array[i]), font="Century 14", width=50, bd=0, bg=Color.colorButton1, command=lambda i=i: self.clickButtonPay(int(array[i])))
                self.buttonNewPurchase.grid(column=0, row=int(i), columnspan=5, pady=10, padx=10)

    def clickButtonPay (self, id_request) :
        self.click_Designer=tk.Toplevel(self.master)
        self.app=DesignerSize(self.click_Designer, id_request)

класс 2 Экран с формой для заполнения

class DesignerSize (TestInput.TestInputLayoutOne, TestInputNumber2.TestInputLayoutTwo) :
    def __init__(self, master, id_request) :
        self.master=master
        self.DesignerJobe = tk.Label(self.master, text=String.textApplicationForManufacturing, font="Century 14",
                                   bg=Color.colorMainWindow)
        self.DesignerJobe.grid(column=0, row=0, columnspan=5, pady=10, padx=100)

        array=DesignerSize.functionRequestOnDesigner(self, int(id_request))
        request=String.textName + ": "+str(array[0]) +"\n"+String.textAddress+": "+str(array[1])+"\n"+String.textNumberPhone+": "+str(array[2])+"\n"+String.textTypeRequest+": "+str(array[3])+"\n"+String.textComment+": "+str(array[4]).split("\\")[0]
        self.requestClient = tk.Label(self.master, text=request, justify="left", font="Century 14",
                                     bg=Color.colorInfoRequest)
        self.requestClient.grid(column=0, row=1, columnspan=2, pady=10, padx=100)

        self.orderDescription=tk.Label(self.master, text=String.textOrderDescription, font="Century 14",
                       bg=Color.colorMainWindow)
        self.orderDescription.grid(column=0, row=2,columnspan=2, pady=10, padx=10)
        self.entOrderDescription = tk.Entry(self.master,width=35,bd=0,font="Century 14", bg=Color.colorEntry)
        self.entOrderDescription.grid(column=2, columnspan=3, row=2, pady=10, padx=10)

        self.dimensions=tk.Label(self.master, text=String.textDimensions, font="Century 14",
                                       bg=Color.colorMainWindow)
        self.dimensions.grid(column=0, row=3,columnspan=2, pady=10, padx=10)
        self.entDimensions = ScrolledText(self.master,width=35, height=5,bd=0,font="Century 14", bg=Color.colorEntry)
        self.entDimensions.grid(column=2, columnspan=3, row=3, pady=10, padx=10)

        self.prepaymentAmount=tk.Label(self.master, text=String.textPrepaymentAmount, font="Century 14",
                         bg=Color.colorMainWindow)
        self.prepaymentAmount.grid(column=0, row=4,columnspan=2, pady=10, padx=10)
        self.entPrepaymentAmount = tk.Entry(self.master,width=35,bd=0,font="Century 14", bg=Color.colorEntry)
        self.entPrepaymentAmount.grid(column=2, columnspan=3, row=4, pady=10, padx=10)

        self.dataRequest=tk.Label(self.master, text=String.textDateNow, font="Century 14",
                                       bg=Color.colorMainWindow)
        self.dataRequest.grid(column=0, row=5,columnspan=2, pady=10, padx=10)
        self.entDataRequest = tk.Label(self.master, text=String.textDate, font="Century 14",
                                       bg=Color.colorMainWindow)
        self.entDataRequest.grid(column=2, row=5,columnspan=3, pady=10, padx=10)


        id=int(id_request)+1000
        if DesignerSize.functionTestRequestEstimate(id)==1:
            self.buttonOk=tk.Button(self.master, text=String.textButtonOk, font="Century 14", width=10, bd=0, bg=Color.colorButton, command=self.clickOkAddEstimate(id_request))
            self.buttonOk.grid(column=1, row=7, pady=15, padx=10)
        else :
            self.buttonOk=tk.Button(self.master, text=String.textButtonIssueAReport, font="Century 14", width=20, bd=0, bg=Color.colorButton, command=lambda : self.clickOkAddEstimate(int(id_request)))
            self.buttonOk.grid(column=1, row=7, pady=15, padx=10)

        self.buttonClear=tk.Button(self.master, text=String.textButtonClear, font="Century 14", width=10, bd=0, bg=Color.colorButton, command=self.clickCleanerEstimate)
        self.buttonClear.grid(column=2, row=7, pady=15, padx=10)

    def clickCleanerEstimate (self) :
        self.entOrderDescription.delete(0, 'end')
        self.entDimensions.delete(1.0, 'end')
        self.entPrepaymentAmount.delete(0, 'end')


    def clickOkAddEstimate (self, id) :
        textEntOrderDescription=self.entOrderDescription.get()
        textEntDimensions=self.entDimensions.get("1.0", tk.END)
        textEntPrepaymentAmount=self.entPrepaymentAmount.get()
        if DesignerSize.functionUpdateRequestTable(self, int(id), str(textEntOrderDescription), str(textEntDimensions), str(textEntPrepaymentAmount))==1 :
            tk.messagebox.showinfo(title="Info", message=String.textAddRequestSuccrsfully)
            DesignerSize.clickCleanerEstimate(self)
        else:
            tk.messagebox.showerror(title="Warrning", message=String.textNoAddRequestSuccrsfully)

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

Автор решения: not_tep

Вы можете использовать метод root.update() (для обновления окна целиком) или widget.update() (для обновления конкретного виджета).

→ Ссылка