Есть ли способ получить текст из текстового виджета между двумя разными символами? - PullRequest
0 голосов
/ 08 апреля 2019

Делая более простую версию 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 Ответ

1 голос
/ 08 апреля 2019

Виджет tkinter Text имеет метод search , который можно использовать для поиска первого вхождения шаблона, начинающегося с индекса.

В вашем случае вы захотите найти первое " после индекса 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 к левой кнопке мыши в демонстрационных целях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...