如何统计tkinter文本小部件中的字母数和行数?

时间:2016-08-10 06:39:21

标签: python-3.x tkinter

我想在tkinter文本小部件中计算字母数和行文本。 这是我的示例代码:

from tkinter import *

def letter_refresh():
    pass   

def row_refresh():
    pass

app=Tk()

label=Label(text='writing')
label.grid(row=1, column=0)

text = Text( )
text.insert(1.0,"abcd\nefgh\n\nijkl\nmnop")
text.grid(row=1,column=1,padx=5, pady=20)


letter=Button(text='letter_count', command = letter_refresh)
letter.grid(row=2, column=0,padx=1, pady=1)

letter_display=Entry()
letter_display.grid(row=2, column=1,  padx=5, pady=5,sticky=W)



row=Button(text='row_count', command = row_refresh)
row.grid(row=3, column=0,padx=1, pady=1)

row_display=Entry()
row_display.grid(row=3, column=1,  padx=5, pady=5,sticky=W)

app.mainloop()

我希望letter_count结果为16,如果letter_count按下按钮。

我希望row_count结果为4,如果row_count按下按钮。

2 个答案:

答案 0 :(得分:0)

条目的文字只不过是一个字符串。

计算可以在\n上拆分的行,并检查返回列表的len

要计算字母,只需检查字符串的len即可。您可能希望从该值('\n')中减去len(string) - string.count('\n')的数量。

答案 1 :(得分:-1)

编辑: Text小部件具有insertget方法,因此只需使用它们。

txt = Text(root)
txt.pack()

def count(t):
    text = t.get('1.0', 'end-1c')
    rows = text.count('\n')
    letters = len(text) - rows
    return letters, rows

# in your case
print('Letters: {}\n Rows: {}'.format(*count(txt)))