好日子,我是新来的,我已经解决了这个问题几天了Tkinter目前的一个问题,我做了一些研究,关于当鼠标点击离开Tkinter窗口时如何关闭它,但是没有太多信息可以这样做
所以,我的问题是,当鼠标在Tkinter外单击时,如何关闭Tkinter窗口?我已经试过用FocusOut
的方法来处理我的问题。但是,我已经尝试使用root绑定,它将关闭窗口,即使我在框架小部件中单击了。然后,我bind
使用该帧,当我在Tkinter外部单击时,Tkinter将关闭。因此,到目前为止,我已经证明关闭Tkinter的想法是可行的
然后出现了一个新问题,当我单击窗口中的Combobox
小部件时,窗口也将关闭。有没有更好的解决方案来证明这个概念
这是指示我的问题的代码
import tkinter as tk
from tkinter import StringVar, ttk,messagebox
root = tk.Tk()
root.title("Sample Window")
root.minsize(300,350)
info_frame = tk.LabelFrame(root, text = "Information")
info_frame.pack(padx = 5, pady = 5 , fill = "both",expand=True)
tabControl = ttk.Notebook(info_frame)
person1tab = ttk.Frame(tabControl)
tabControl.add(person1tab,text = "Person1")
tabControl.pack(expand=1,fill="both")
person2tab = ttk.Frame(tabControl)
tabControl.add(person2tab,text = "Person2")
tabControl.pack(expand=1,fill="both")
fname_var = tk.StringVar()
lname_var = tk.StringVar()
gender_var = tk.StringVar()
age_var = tk.IntVar()
fname_label = tk.Label(person1tab, text = "First name:").pack(padx=5,pady=3)
fname_entry = tk.Entry(person1tab, textvariable=fname_var).pack(padx=5,pady=3)
lname_label = tk.Label(person1tab, text = "Last name:").pack(padx=5,pady=3)
lname_entry = tk.Entry(person1tab, textvariable=lname_var).pack(padx=5,pady=3)
gender_label = tk.Label(person1tab, text = "Gender:").pack(padx=5,pady=3)
gender_combo = ttk.Combobox(person1tab, textvariable=gender_var,state='readonly')
gender_combo['values'] = ('Male','Female')
gender_combo.current(0)
gender_combo.pack(padx=5,pady=3)
age_label = tk.Label(person1tab, text = "Age:").pack(padx=5,pady=3)
age_label = tk.Entry(person1tab, textvariable=age_var).pack(padx=5,pady=3)
page2label = tk.Label(person2tab,text = "This is tab 2.").pack(padx=5,pady=3)
def lossfocus(event):
root.quit()
pass
tabControl.bind('<FocusOut>', lossfocus)
root.mainloop()
您仍然可以在根窗口上绑定
<FocusOut>
,但需要检查:相关问题 更多 >
编程相关推荐