我正在使用 Tkinter 搞乱记事本应用程序,我希望在主文本框上方居中放置一个标签,供用户标记笔记。我希望能够双击标签进行编辑。当用户点击标签文本区域时,它会将文本保存在那里。我知道我可以创建一个简单的文本区域供用户输入,但我也希望它始终居中而不是闪烁的光标。我是 Tkinter 的新手,所以也许有一个简单的解决方案或更好的方法。感谢您的任何帮助!
您可以使用已配置的标签,以便在双击它时覆盖一个条目小部件。
像这样的东西,例如:
class EditableLabel(tk.Label):
def __init__(self, parent, *args, **kwargs):
super().__init__(parent, *args, **kwargs)
self.entry = tk.Entry(self)
self.bind("<Double-1>", self.edit_start)
self.entry.bind("<Return>", self.edit_stop)
self.entry.bind("<FocusOut>", self.edit_stop)
self.entry.bind("<Escape>", self.edit_cancel)
def edit_start(self, event=None):
self.entry.place(relx=.5, rely=.5, relwidth=1.0, relheight=1.0, anchor="center")
self.entry.focus_set()
def edit_stop(self, event=None):
self.configure(text=self.entry.get())
self.entry.place_forget()
def edit_cancel(self, event=None):
self.entry.delete(0, "end")
self.entry.place_forget()
然后,您可以像使用普通标签一样使用它,如下例所示。
root = tk.Tk()
label = EditableLabel(root, text="double-click to edit me")
text = tk.Text(root)
label.pack(side="top", fill="x", padx=2, pady=2)
text.pack(side="top", fill="both", expand=True)
root.mainloop()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句