Tkinter - 如果使用 if __name__ == '__main__': quit() 关闭,但其他情况下不关闭
我的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
1 个回答
0
这个答案是说,在captcha_str之后加一行代码,用来关闭窗口:
solver = InputWindow(captcha = img_link)
captcha_str = solver.get()
solver.root.destroy()