프레임에 입/출입구에 바인딩하고 싶습니다. 꽤 쉽습니다. 프레임에있는 일부 위젯에 마우스를 올리면 프레임에서 빠져 나옵니다 (프레임이 위젯 영역에서 "보이지"않기 때문에). 텍스트 필드 (Label)를 표시 한 다음 프레임 입력시 편집 가능한 필드로 변경하는 다음 코드를 실행하여 효과가 적용됩니다. 버튼이 텍스트 영역 자체에 있으면 레이블로 돌아갑니다. . 'TextArea
에서 :이 문제를 해결하는 방법을 임신의 문제가트래핑 프레임 입구 tkinter
from tkinter import *
class MainWindow(Frame):
def __init__(self,master):
super().__init__(master)
self.master = master
#self.master.state('zoomed')
self.pack()
self.edit = 0
self.initUI()
def initUI(self):
self.c = Canvas(self, height = 100, width = 400, bg = "red")
self.c.pack()
self.bind('<Enter>', lambda *args: textarea.display(1))
self.bind('<Leave>', lambda *args: textarea.display(0))
self.textstring = StringVar()
self.textstring.set("Hello")
textarea = TextArea(self.c,self.edit,self.textstring)
textarea.display(2)
self.c.create_window(10,10,window = textarea,anchor = NW)
class TextArea(Frame):
def __init__(self,master,active,textstr):
super().__init__()
self.master = master
self.active = active
self.textstr = textstr
self.inflag = False
def display(self,e):
if e == 0:
for child in self.winfo_children():
child.destroy()
L = Label(self,text = self.textstr.get(),relief = "flat")
L.pack()
elif e ==1:
for child in self.winfo_children():
child.destroy()
E = Entry(self,textvariable = self.textstr,width = 10)
E.pack()
elif e == 2:
L = Label(self, text=self.textstr.get(), relief="flat")
L.pack()
root = Tk()
mainframe = MainWindow(root)
mainframe.pack()
root.mainloop()
* 미묘합니다. 감사! 이제 완벽하게 작동합니다. – user3486991