我正在尝试获取tkinter text小部件中的输入文本,并将其逐行传输到另一个文本小部件对象。
我尝试将文字传递给text.get(起始索引,结束索引)和text.insert(索引,stringToInsert)
from tkinter import *
import re 
class TextCompiler:
    def __init__(self, master):
        self.a = 1.0
        self.frame = Frame(master)
        self.frame.pack()
        self.topLabel = Label(master, text = "Enter text to be compiled: ", bg = "green", fg = "black")
        self.topLabel.pack(side = TOP)
        self.windowIn = Text(master, state=NORMAL, height=20, width=30)
        self.windowIn.pack(side = LEFT)
        self.windowOut = Text(master, height=20, width=30)
        self.windowOut.pack(side = RIGHT)
        self.printButton = Button(self.frame, text="Compile next line?", command = lambda: self.transferPrint(self.a))
        self.printButton.pack(side = BOTTOM)
        self.quitButton = Button(self.frame, text="Quit", command=lambda: self.quitStuff(master))
        self.quitButton.pack(side = BOTTOM)
    def transferPrint(self, a):
            b = self.a + 0.30
            endOfLine = "{0:.2f}".format(b)
            inputText = self.windowIn.get(self.a, endOfLine)
            self.windowOut.insert(self.a, inputText)
            self.a = self.a + 1.0
    def quitStuff(self, master):
        self.frame.quit()
        master.destroy()
root = Tk()
TextCompiler(root)
root.mainloop()我需要它复制一个整行,并在单击“编译下一行?”时将其传输到第二个文本窗口。按钮。到目前为止,我让它捕获了一行代码,然后没有正确地粘贴它。它将粘贴到上一个字符串的末尾。然后,当我输入一整行文本和第二行文本时,它粘贴得不完整。所以我们应该get(1.0,1.30)和insert(1.0,string),然后get(2.0,2.30) insert(2.0,string) get(3.0,3.30) insert(3.0,string)等等。但它忽略了对参数的文字更改,并且如前所述,没有正确粘贴整行文本……
发布于 2019-09-20 10:41:24
有两个问题。首先,索引不是浮点数,您不应该对它们进行浮点数学运算。索引是line.character形式的字符串。
例如,在浮点数中,1.3和1.30是相同的。作为索引,"1.3“表示第一行的第三个字符,"1.30”表示第一行的第三十个字符。
此外,您忽略了复制每行末尾的换行符。您不能在另一个窗口的第2行插入,除非第1行以换行符结束,如果第2行不以换行符结束,则不能在第3行插入,以此类推。
我不知道你的意图是什么,所以很难推荐一个解决方案。例如,您是否真的希望只复制一行的前30个字符,或者您的目标是复制整个行?
如果只需要一行的前30个字符,并将其复制到另一个窗口中的新行,则需要在复制时插入新行。例如:
self.windowOut.insert("end", inputText+"\n")如果您的目标只是复制整行,则可以使用修饰符复制整行加上尾随的换行符。或者,只复制整行,而不复制换行符,就像上面一样,在复制时可以附加一个换行符。
下面是如何获取完整行的方法:
end = "{} lineend".format(self.a)下面是如何获得完整的行加尾随的换行符:
end = "{} lineend+1c".format(self.a)https://stackoverflow.com/questions/58020950
复制相似问题