问题描述
为什么 Toplevel 销毁时主窗口中的 Entry
不起作用?
我正在尝试像代码中一样创建两个 Toplevel
窗口。我遇到的问题是点击 Entry
没有响应,我无法在输入框中输入内容。我研究了这个问题,但找不到答案。
当点击按钮和顶层出现时。然后当按下第二个按钮(代码中称为but
)时,无法直接点击那里的输入框。起初焦点需要转移到另一个窗口,当主窗口再次处于活动状态时,输入框就可以使用了。
from tkinter import *
class Window(Tk):
def __init__(self):
super().__init__()
self.title("deneme")
self.geometry("350x400")
frame = Frame(self)
frame.pack()
label = Label(frame,text="(text)",font="times 15 bold")
label.pack()
entry = Entry(frame)
entry.pack()
button = Button(frame,text="Click me",command=self.work)
button.pack()
def work(self):
try:
if self.w2.state() == "normal":
self.move()
except:
#function of Toplevel windows.
self.w1 = BluryTopLevel(self)
self.w2 = BluryTopLevel(self)
self.w1.withdraw()
self.w2.withdraw()
self.w1.overrideredirect(True)
self.w2.overrideredirect(True)
self.w1.config(bg="green")
self.w2.config(bg="red")
self.w1.attributes("-alpha",0.5)
frm = Frame(self.w2,bg="red")
frm.pack(pady=5)
self.ent = Entry(frm,width=8,font="none 15")
self.ent.pack(padx=10,pady=5)
but = Button(frm,text="Submit",command=self.func)
but.pack(side=RIGHT,padx=5,pady=5)
self.move()
self.refresh()
def refresh(self,event=None):
self.deiconify()
self.w1.deiconify()
self.w2.deiconify()
self.w2.focus()
print("refresh")
def func(self):
print(self.ent.get())
self.unbind("<FocusIn>")
self.w1.destroy()
self.w2.destroy()
def move(self):
self.update_idletasks()
w = self.winfo_width()
h = self.winfo_height()
x = self.winfo_rootx()
y = self.winfo_rooty()
self.w1.geometry("%dx%d+%d+%d"%(w,h,x,y))
self.w2.geometry("+%d+%d"%(x+40,y+70))
class BluryTopLevel(Toplevel):
def __init__(self,root):
Toplevel.__init__(self)
self.transient(root)
window = Window()
window.mainloop()
我想要的是能够直接点击进入。现在谢谢。我怀疑的是 self.transient()
,但对此几乎一无所知。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)