繁体   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