【问题标题】:How to get the text out of a scrolledtext widget?如何从滚动文本小部件中获取文本?
【发布时间】:2019-05-25 00:45:48
【问题描述】:

我是 tkinter python 模块的新手。我尝试做一个项目。我学到了一些关于菜单的新知识,我正在尝试制作一个小的 UI 项目,允许用户在滚动的文本小部件中写一些东西,然后保存它(使用 sys 模块)。

我已经尝试过一些对按钮有用的东西。例如.get(),但它不起作用。我也试过["text"]方法。

import tkinter, sys

root = tkinter.Tk()

class saveProject:
    def __init__(self, master):
        self.master = master
        self.textFrame = tkinter.scrolledtext.ScrolledText(self.master, width=100, bd=10, relief="raised")
        self.textFrame.pack()
     def save(self):
        #self.saveText = self.textFrame.get()
        self.saveText = self.textFrame["text"]

project = saveProject(root)
root.mainloop()

问题是,正如我已经说过的,我不知道如何从 tkinter.scrolledtext.ScrolledText 小部件中获取文本。

【问题讨论】:

  • tkinter 没有我所知道的 scrolledtext.ScrolledTextScrolledText 小部件,因此不清楚您在说什么。另一方面,可以使常规的Text 可滚动。
  • @martineau 看看这里:[docs.python.org/3/library/tkinter.scrolledtext.html] 我认为这个答案可能对您有所帮助:[stackoverflow.com/questions/14824163/…。这个问题可以被认为是重复的吗?
  • @Valentino:您评论中的第一个文档链接导致:404 Not Found。可能重复的另一个可能是一个 - if 这就是 OP 真正在谈论的内容。
  • @martineau ops,让我用链接再试一次。 [docs.python.org/3/library/tkinter.scrolledtext.html]。如果 Gigi 所说的滚动文本是这个,它只是一个带有滚动条的 tkinter.Text 类。
  • @Valentino:那个链接效果更好。我以前从未使用过 tix 扩展小部件(并且不会因为它的使用已“自 3.6 版以来已弃用”)。这个文档,就像tkinter 中的大多数其他内容一样,也不是很好。我想人们可以看看源代码来弄清楚如何做到这一点......

标签: python tkinter gettext


【解决方案1】:

所以,出于好奇,我尝试了描述 here 的内容(我对 OP 问题的评论中的链接相同)。它也适用于scrolledtext

import tkinter, sys
from tkinter import scrolledtext

root = tkinter.Tk()

class saveProject:
    def __init__(self, master):
        self.master = master
        self.textFrame = scrolledtext.ScrolledText(self.master, width=100, bd=10, relief="raised")
        self.textFrame.pack()
        self.saveb = tkinter.Button(self.master, text="Save", command= lambda : self.save())
        self.saveb.pack()

    def save(self):
        cur_inp = self.textFrame.get("1.0", tkinter.END)
        fl = open("output.txt", "w")
        fl.write(cur_inp)

project = saveProject(root)
root.mainloop()

我在ScrolledText 小部件的底部添加了一个保存按钮。小部件内容保存在output.txt 区域内。

【讨论】:

    【解决方案2】:

    help(ScrolledText) 表示它是tkinter.Text 小部件的子类,这显然意味着从中获取文本的方式是相同的——通过使用“文本小部件索引”的get() 方法(这里有一些@987654321 @关于他们)。

    以下是获取小部件中所有文本的示例(我添加了 Save text Button 以测试save() 方法):

    import sys
    import tkinter as tk
    from tkinter.scrolledtext import ScrolledText
    
    class SaveProject:
        def __init__(self, master):
            self.master = master
            self.textFrame = ScrolledText(self.master, width=100, bd=10, relief="raised")
            self.textFrame.pack()
            # Added for testing.
            self.save_btn = tk.Button(self.master, text='Save text', command=self.save)
            self.save_btn.pack()
    
        def save(self):
            self.saveText = self.textFrame.get('1.0', tk.END)  # Get all text in widget.
            print('self.saveText:', self.saveText)
    
    root = tk.Tk()
    project = SaveProject(root)
    root.mainloop()
    

    【讨论】:

      猜你喜欢
      • 2015-05-10
      • 2021-03-24
      • 2021-07-09
      • 2019-03-10
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2019-06-11
      相关资源
      最近更新 更多