Text.insert(tk.insert…)方法在Python中无法正常工作
我试图在tkinter的“text.insert”方法(GUI)中显示一些句子。 这些句子是另一个功能的结果。 我将lsit的索引保存在另一个列表中,但当我尝试打印所有5个句子时,它只打印2或3个 我试着这样打印它们:Ans=sent[out[0]],Ans1=sent[out[1]。。。。 我做了5次,在函数的末尾我写了:text1.insert(tk.insert,Ans,Ans1…) 因此,它只出现2或3句话Text.insert(tk.insert…)方法在Python中无法正常工作,python,tkinter,Python,Tkinter,我试图在tkinter的“text.insert”方法(GUI)中显示一些句子。 这些句子是另一个功能的结果。 我将lsit的索引保存在另一个列表中,但当我尝试打印所有5个句子时,它只打印2或3个 我试着这样打印它们:Ans=sent[out[0]],Ans1=sent[out[1]。。。。 我做了5次,在函数的末尾我写了:text1.insert(tk.insert,Ans,Ans1…) 因此,它只出现2或3句话 import tkinter as tk from tkinter import
import tkinter as tk
from tkinter import *
from collections import Counter
from nltk.tokenize import sent_tokenize, word_tokenize
from tkinter import filedialog
from tkinter.messagebox import *
def my_function():
global lastScore
global out
global sent
filename = filedialog.askopenfile()
fileReadyToRead = open(filename.name, 'r')
file_contents = fileReadyToRead.read()
data = file_contents
data = file_contents
word = word_tokenize(data)
sent = sent_tokenize(data)
a = len(sent)
b = len(word)
mo = b / a
number = len(word)
for x in range(0, number):
map(str.lower, word[x])
arraylist = [0] * b
sentscore = [0] * a
for x in set(word):
for i in range(0, a):
if x in sent[i]:
sentscore[i] += word.count(x) / mo
number = len(sent)
sentList = [0] * number
listaScore = [0] * number
lastScore = [0] * number
for x in range(number):
sentList[x] = x + 1
listaScore[0] = listaScore[0] + 0.5
listaScore[number - 1] = listaScore[number - 1] + 0.5
for i in range(0, number):
lastScore[i] = listaScore[i] + sentscore[i]
out = [i for i in sorted(range(len(lastScore)),
key=lastScore.__getitem__, reverse=True)][:5]
def show_answer():
my_function()
Ans = "Sentences : \n",
Ans0 = out
Ans00 = out
Ans1 = sent[out[0]]
Ans2 = sent[out[1]]
Ans3 = sent[out[2]]
Ans4 = sent[out[3]]
Ans5 = sent[out[4]]
text1.insert(tk.INSERT, Ans, Ans0, Ans00, Ans1, Ans2, Ans3, Ans4, Ans5)
root = tk.Tk()
root.title("Programm")
text1 = tk.Text(root, heigh=25, width=70)
text1.pack()
button1 = Button(root, text='Result', command=show_answer)
button1.pack()
blank = Entry(root)
def close_window():
root.destroy()
frame = Frame(root)
frame.pack()
buttonExit = Button(frame, text=" Exit ", command=close_window)
buttonExit.pack()
root.mainloop()
insert
方法的语法是,它获取一个索引、一个字符串,然后可选地获取一个标记列表、另一个字符串、一个标记列表和另一个字符串,依此类推。规范的tcl/tk文档对它的描述如下:
路径名插入索引字符?标记列表字符标记列表
…如果存在多个字符标记列表参数对,则会生成
与使用单独的路径名插入小部件命令的效果相同
已按顺序为每一对分发。最后一个标记列表参数可能是
省略
鉴于这一说法:
text1.insert(tk.INSERT, Ans, Ans0, Ans00, Ans1, Ans2, Ans3, Ans4, Ans5)
。。。tkinter将这样解释这些参数:
- 插入-索引
- Ans-要插入的文本
- Ans0-一个或多个标记
- Ans00-要插入的文本
- Ans1-一个或多个标记
- Ans2-要插入的文本
- Ans3-一个或多个标签
- Ans4-要插入的文本
- Ans5-一个或多个标签
insert
方法之前,将它们与换行符连接在一起:
data = "\n".join((Ans, Ans0, Ans00, Ans1, Ans2, Ans3, Ans4, Ans5))
text1.insert(tk.INSERT, data)
语法是
insert(索引、文本、*标记)
:。Dotext='\n'。加入([Ans1,Ans2,…])
就是这样,真的很有帮助!Thanks@stovfl:不完全是。语法支持交替的文本和标记对(例如:插入(索引、文本、标记、文本、标记、文本、标记等)。