Python 3.x tkinter-如何使用get()将滚动文本小部件中的输入保存到变量

Python 3.x tkinter-如何使用get()将滚动文本小部件中的输入保存到变量,python-3.x,tkinter,Python 3.x,Tkinter,下面的代码适用于Entry(),但当我使用ScrolledText()时,它无法工作 from tkinter import * from tkinter.scrolledtext import * def click(): a = text1.get() print(a) window = Tk() window.title("TITLE PLACEHOLDER") Label(window,text="Subject", bg="black",fg="white", fo

下面的代码适用于Entry(),但当我使用ScrolledText()时,它无法工作

from tkinter import *
from tkinter.scrolledtext import *

def click():
    a = text1.get()
    print(a)

window = Tk()
window.title("TITLE PLACEHOLDER")
Label(window,text="Subject", bg="black",fg="white", font="Arial 10").grid(row=1,column=0,sticky=W)
text1 = ScrolledText(window,bg="white", width=50,font="Arial 10")
text1.grid(row=2,column=0,sticky=W)
Button(window, text="send",width=6,command=click).grid(row=3,column=0,sticky=W)
window.mainloop()
错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\tkinter\__init__.py", line 1699, in __call__
    return self.func(*args)
  File "C:\Users\user\Desktop\folder_name\testing.py", line 5, in click
    a = text1.get()
TypeError: get() missing 1 required positional argument: 'index1'

有什么建议吗?

由于您的错误显示
get()
缺少必需的位置参数,您需要从输入的文本中指定文本选择的
start
end

需要传递给
get()
方法的参数:

text1.get('1.0','end-1c')

此处
1.0
表示从第一行的第一个字符开始获取文本
end-1c
表示选择文本直到结尾,
-1c
表示从结尾删除
1个字符
,因为在文本末尾添加了新行
\n
字符。简单地说,它将选择您输入的所有文本

工作代码:

从tkinter导入*
从tkinter.scrolledtext导入*
def click():
a=text1.get('1.0','end-1c')
印刷品(a)
window=Tk()
窗口标题(“标题占位符”)
标签(窗口,text=“Subject”,bg=“black”,fg=“white”,font=“Arial 10”).grid(行=1,列=0,粘性=W)
text1=滚动文本(窗口,bg=“白色”,宽度=50,font=“Arial 10”)
text1.grid(行=2,列=0,粘性=W)
按钮(窗口,text=“发送”,宽度=6,命令=click)。网格(行=3,列=0,粘性=W)
window.mainloop()
屏幕截图


希望有帮助

一般来说,你应该使用“end-1”而不是“end”。Tkinter总是在文本小部件的最末端添加一个换行符。当你使用
END
时,你比用户实际输入的字符多了一个字符。谢谢@BryanOakley,下次我会记住这一点。我更新了我的答案。