我正在使用 Tkinter 搞亂記事本應用程式,我希望在主文本框上方居中放置一個標簽,供用戶標記筆記。我希望能夠雙擊標簽進行編輯。當用戶點擊標簽文本區域時,它會將文本保存在那里。我知道我可以創建一個簡單的文本區域供用戶輸入,但我也希望它始終居中而不是閃爍的游標。我是 Tkinter 的新手,所以也許有一個簡單的解決方案或更好的方法。感謝您的任何幫助!
uj5u.com熱心網友回復:
您可以使用已配置的標簽,以便在雙擊它時覆寫一個條目小部件。
像這樣的東西,例如:
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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/447554.html
下一篇:如何在python中重繪文本?
