Я немного новичок в tkinter и Python и работаю над семестровым проектом. По сути, у меня есть главное окно tkinter, затем из этого окна вызываются окна topLevel в зависимости от пользовательского ввода. В каждом окне topLevel у меня есть кнопка, которая выполняет функцию, я также хочу, чтобы эта кнопка закрывала окно topLevel после выполнения этой функции. Как лучше всего подойти к этой проблеме?
Я пытался уничтожить или закрыть окно, но оно также закрывает главное окно. Я просто ищу способ закрыть окно topLevel и выполнить функцию одним нажатием кнопки
class MainWindow:
# Entry box
self.entry = StringVar()
self.text_box = Entry(master, textvariable=self.entry)
self.text_box.grid(row=1, column=2)
# Displays and binds button, so when clicked, the enter_button function is called
self.input_button = Button(master, text='Enter', command=self.enter_button)
self.input_button.grid(row=1, column=3, sticky='W')
def enter_button(self):
# Get user input and perform the given command
command = self.entry.get()
# Creates a root for a toplevel window
top = Toplevel()
if command == '1':
add_gui = AddPayment(top)
top.mainloop()
elif command == '2':
#rest of classes/commands
основной
def main():
root = Tk()
app = MainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()
AddPayment класс
class AddPayment:
def __init__(self,master):
self.master = master
self.add_label = Label(master, text='How much is the payment for?')
# payment box
self.pay = StringVar()
self.pay_box = Entry(master, textvariable=self.pay)
self.add_button = Button(master, text='Add', command=self.add_payment)
# position widgets
self.pay_box.grid(row=1, column=2)
self.add_label.grid(row=1, column=1)
self.add_button.grid(row=1, column=3)
def add_payment(self):
database.add_pay(self.pay.get())
В этом примере я хотел бы, чтобы что-то в функции add_payment закрывало окно topLevel после того, как функция add_pay выполнена каким-либо образом. Заранее спасибо