Моя программа предполагает создание объектов из введенных данных. Если вводятся данные, которые могут быть неверными, но не нарушать работу программы (например, опечатки), пользователю предлагается диалоговое окно, которое предупреждает об ошибках и спрашивает, хотят ли они продолжить.
Очень урезанный код:
from tkinter import *
from tkinter.ttk import *
class Tab_ProjectDesigner:
def __init__(self):
self.proceed = BooleanVar(self.page, False, "proceed")
self.str_messages = StringVar(self.page, name="str_messages")
#Contains information about possible errors, if any
##self.page is Frame containing all widgets in this class##
def warning(self):
#creates dialog warning user of possible errors before proceeding
warningBox = WarningBox(self.page, self, self.str_messages.get())
def createObject(self):
#if errors present:
self.warning()
#if self.proceed.get() == True:
#proceed to create object
return
class WarningBox(Toplevel):
def __init__(self, parentWidget, parentClass, warningText):
super().__init__(parentWidget)
self.proceed = parentClass.proceed
lbl = Label (self, text=warningText + "\nAre you sure you want to proceed?")
btnYes = Button(self, text="Yes", command=self.true)
btnNo = Button(self, text="No", command=self.false)
return
def true(self):
self.proceed.set(True)
self.destroy()
return
def false(self):
self.proceed.set(False)
self.destroy()
return
createObject () вызывает warning () при наличии возможных ошибок. warning () создает WarningBox , который запрашивает пользователя и изменяет self.proceed в Tab_ProjectDesigner экземпляре, из которого он вызывается. WarningBox затем уничтожается.
Код работает, но меня это удивляет. Есть ли способ для WarningBox обрабатывать свое собственное поведение / события, а затем просто возвращать значение функции, которая его создала? Как:
def warning(Self):
#if erorrs:
proceed = WarningBox():
if proceed == True:
#proceed to object creation