#python-3.x #tkinter
#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:
Текстовый виджет tkinter имеет 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
функцию к левой кнопке мыши в демонстрационных целях.
Комментарии:
1. СПАСИБО!!!! Это, вероятно, самый продуктивный момент в этом проекте. Это сработало, и это потрясающе.