我想在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
按下按钮。
答案 0 :(得分:0)
条目的文字只不过是一个字符串。
计算可以在\n
上拆分的行,并检查返回列表的len
。
要计算字母,只需检查字符串的len
即可。您可能希望从该值('\n'
)中减去len(string) - string.count('\n')
的数量。
答案 1 :(得分:-1)
编辑:
Text
小部件具有insert
和get
方法,因此只需使用它们。
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)))