[英]Is there an Alternative to textvariable on ttk.Entry widget, for tk.Text widget on TK inter?
因此根據 Tkinter 文檔,Entry 小部件的目的是允許用戶輸入或編輯單行文本。 我想輸入並編輯多行文本,但出現問題。 tkinter 文本建議的替代方案根本無法完成工作!
這是我使用 ttk.Entry 的代碼:
def _set_project_description_frame(self):
project_description_frame = ttk.Frame(self._main_frame)
ttk.Label(project_description_frame, text="Project Description").pack(side=tk.TOP, anchor="nw")
ttk.Entry(project_description_frame, textvariable=self._project_description).pack(side=tk.LEFT,
expand=True, fill=tk.X)
return project_description_frame
但我真正想要的是讓描述部分看起來像一個描述 go 的地方,所以我用 tk.Text 替換了 ttk.Entry:
def _set_project_description_frame(self):
project_description_frame = ttk.Frame(self._main_frame)
ttk.Label(project_description_frame, text="Project Description").pack(side=tk.TOP, anchor="nw")
tk.Text(project_description_frame, height=5).pack(side=tk.LEFT, expand=True, fill=tk.X)
return project_description_frame
最后的結果正是我想要的,但問題是,如果不將textvariable=self._project_description
傳遞給tk.Text
,就不可能實際保存輸入到該文本字段中的任何內容。
所以我的問題是,當我無法將textvariable=self._project_description
傳遞給它時,如何修復代碼以便能夠像 ttk.Entry 一樣捕獲輸入到文本字段中的內容?
Text
小部件不支持textvariable
,因為Text
小部件可以包含的不僅僅是文本。 要從Text
小部件中獲取內容,您需要調用小部件上的get
方法。
要獲取小部件的所有內容,您首先需要保留對小部件的引用。 然后,只需使用所需文本范圍的索引調用get
即可。 通常這兩個索引是第一個字符的字符串"1.0"
,文本小部件本身添加的換行符之前的最后一個字符的"end-1c"
。
def _set_project_description_frame(self):
...
self.text_widget = tk.Text(project_description_frame, height=5)
self.text_widget.pack(side=tk.LEFT, expand=True, fill=tk.X)
...
有了它,代碼中任何其他需要獲取數據的地方都可以這樣做:
self.text_widget.get("1.0", "end-1c")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.