有没有办法我可以从两个不同字符之间的文本小部件中获取文本?

时间:2019-04-08 06:17:28

标签: python-3.x tkinter

在python中制作一个更简单的python版本,我希望能够在文本框中显示字符串中两个字符之间的文本

我尝试过类似shell.get("1.7", '"')这样的代码,但收到一条错误消息,说_tkinter.TclError: bad text index """ 这是我当前代码的一小段:

from tkinter import *
import datetime

def run():
    print("File run " + str(datetime.datetime.now()))
    line = shell.get("1.0", END)
    #dont worry about ^ line for now (line 2 in run())
    if 'print "' in line:
        print (shell.get('1.7', '"'))

shell = ScrolledText(root, width=167, height=42)
shell.grid(column=0, row=1)

这是外壳中的内容 print "Hello World"

我只想要类似print (shell.get(1.7, "<nearest quotation mark>")

1 个答案:

答案 0 :(得分:1)

tkinter文本小部件具有一个search method,您可以使用它来查找从索引开始的模式的首次出现。

根据您的情况,您可能希望找到索引"之后的第一个1.7。为此,您可以运行:

shell.search('"', '1.7')

集成到您的代码中将是:

from tkinter import *
from tkinter.scrolledtext import ScrolledText
import datetime

def run(event=None):
    print('File run ' + str(datetime.datetime.now()))
    line = shell.get("1.0", END)
    if 'print "' in line:
        print (shell.get('1.7', shell.search('"', '1.7')))


root = Tk()        
shell = ScrolledText(root, width=167, height=42)
shell.insert('1.0', 'print "print this" do not print this')
shell.grid(column=0, row=1)
shell.bind('<Button-1>', run)
root.mainloop()

请注意,出于演示目的,我将run函数绑定到了鼠标左键。