簡體   English   中英

對於 TK inter 上的 tk.Text 小部件,ttk.Entry 小部件上的 textvariable 是否有替代方案?

[英]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

這會產生以下 tkinter output: 在此處輸入圖像描述

但我真正想要的是讓描述部分看起來像一個描述 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM