Мой код Tkinter:
from tkinter import Tk, Label, Entry, Button, END
from PIL import ImageTk, Image
class InputWindow():
def __init__(self, *args, **kwargs):
self.root = Tk()
self.root.title('Image Captcha')
self.root.configure(background='#ffe75c')
# Initializing the Variables to be defined later
image_label = Label(self.root)
# Defining the Input Box and placing it in the window
self.entry = Entry(self.root, width=10, borderwidth=5, font="Arial 15", justify="center")
self.entry.grid(row=2, column=0)
# Removing the contents of the input box.
self.entry.delete(0, END)
image_url = kwargs.get('captcha')
im = Image.open(requests.get(image_url, stream=True, timeout=5).raw)
image_display = ImageTk.PhotoImage(im, master=self.root)
# Removing the previous Image (if present) and
# displaying a new one.
image_label.grid_forget()
image_label = Label(self.root, image=image_display)
image_label.grid(row=1, column=0, columnspan=2, padx=10)
# Defining the submit button
submit_button = Button(self.root, text="Submit", font="Arial 10", command=lambda: self.get())
submit_button.grid(row=3, column=0, columnspan=2, pady=10)
self.root.mainloop()
def get(self):
if self.entry.get():
text = self.entry.get()
self.root.quit()
return text
self.root.quit()
return False
Я вызываю это в своей функции следующим образом:
solver = InputWindow(captcha = img_link)
captcha_str = solver.get()
solver.root.destroy()
Так что это работает нормально, так как закрывается, когда я запускаю:
if __name__ == '__main__':
Однако, когда я запускаю его из другой функции, окно сохраняется и не закрывается. Я хочу, чтобы он закрылся после предоставления мне введенного текста. Я заменил quit() на destroy(), но мне это не удалось.
Буду признателен за любую помощь. Спасибо за ваше внимание и время.
OZooHA
EDIT: ответ заключался в добавлении строки после captcha_str< /p>
solver.root.destroy()
Подробнее здесь: https://stackoverflow.com/questions/781 ... -otherwise