tkinter检查Text小部件是否为空

时间:2016-07-23 08:08:17

标签: python-3.x tkinter

操作系统:Windows 8.1 Python 3.5

在Tkinter

我找到了大量代码来验证输入框是否为空。但是当我尝试为Text小部件应用相同的方法时,它不起作用。看起来文本小部件有一个\ n字符,这可能是问题所在。

有关如何进行此验证的想法吗?

2 个答案:

答案 0 :(得分:0)

Tkinter会在窗口小部件的数据末尾自动添加换行符。要查看窗口小部件是否为空,请将此换行符之前的索引与起始索引进行比较;如果它们相同,则窗口小部件为空。

您可以使用索引"end-1c"(或"end - 1 char")来表示跟踪换行符之前的字符索引。您可以使用文本小部件的compare方法进行比较。

if text.compare("end-1c", "==", "1.0"):
    print("the widget is empty")

假设您的小部件中没有数百兆字节,您还可以获取内容并将长度与零进行比较。这使得窗口小部件中的数据临时副本,在大多数情况下应该是相当无害的。同样,您不希望获得尾随换行符:

if len(text.get("1.0", "end-1c")) == 0:
    print("the widget is empty")

答案 1 :(得分:0)

你也可以这样做:

from tkinter import*
root=Tk()
def check():
    if str(t1.get(1.0,END)).isspace():
        print('The Widget Is Empty')
    else:
        print('The Widget Is Not Empty')
t1=Text(root)
t1.pack()
b1=Button(root,text='Check The Text Widget Is Empty',command=check)
b1.pack()
mainloop()