如何解决在 Toplevel 销毁后单击主窗口中的条目
为什么 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 举报,一经查实,本站将立刻删除。