Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Вернуть позицию выделенного фрагмента из окна Tkinter [RSS Feed]

#1 Янв. 8, 2014 14:37:59

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Вернуть позицию выделенного фрагмента из окна Tkinter

Мне нужно вернуть номер 1-го символа выделенного текста для окна Tkinter (виджет Text). Раньше я для этого делал

prev=txt.get('sel.first','sel.last').replace('\n','')
idx = txt.search(prev,'1.0','end')
,
однако при этом могут найтись и дублирующиеся фрагменты, если они присутствуют в тексте, а мне нужен только выделенный фрагмент.

Отредактировано vanvanov (Янв. 8, 2014 14:39:42)

Офлайн

#2 Янв. 8, 2014 17:20:00

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Вернуть позицию выделенного фрагмента из окна Tkinter

Сложно понять, что Вы хотите.
Я понял так:
1. Есть виджет Text.
2. Пользователь выделяет в Text какую-то часть текста.
3. Нажимает кнопку (button или просто правую кнопку мыши).
4. Программа возвращает номер первого символа из выделенного куска (во всем тексте - “строка.столбец”)?
Я правильно понял?

P.S. Готов помочь, но нужно понять, что в итоге получится…

P.S.S. Какой питон?

Отредактировано 4kpt_II (Янв. 8, 2014 17:40:26)

Офлайн

#3 Янв. 8, 2014 17:43:51

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

Вернуть позицию выделенного фрагмента из окна Tkinter

4kpt_II
Сложно понять, что Вы хотите. Я понял так:1. Есть виджет Text. 2. Пользователь выделяет в Text какую-то часть текста.3. Нажимает кнопку (button или просто правую кнопку мыши)4. Программа возвращает номер первого символа из выделенного куска (во всем тексте - “строка.столбец”)
Правильно, причем не обязательно “строка.столбец”, а просто позиция фрагмента по отношению к тексту, который вставляется в виджет. Например, если текст “юный комсомолец готов служить Советскому Союзу”, а фрагмент - “комсомолец”, то возвращается либо 6 (по буквам), либо (лучше) 2 (по словам). Python 3.1.3.

Отредактировано vanvanov (Янв. 8, 2014 17:44:43)

Офлайн

#4 Янв. 8, 2014 17:57:50

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Вернуть позицию выделенного фрагмента из окна Tkinter

Держите позицию…

import tkinter
#
#
def get_pos(event):
    print text.index("sel.first")
#
root = tkinter.Tk()
#
text = tkinter.Text(root)
text.pack()
#
but = tkinter.Button(root, text="Click!")
but.bind("<Button - 1>", get_pos)
but.pack()
#
root.mainloop()

Будут вопросы - пишите…

Отредактировано 4kpt_II (Янв. 8, 2014 18:00:02)

Офлайн

#5 Янв. 8, 2014 18:03:12

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Вернуть позицию выделенного фрагмента из окна Tkinter

По-поводу слова в строке, то прямого метода нет. Нужно вытянуть строку (номер строки у Вас уже есть) и простым анализом найти нужное слово и потом его позицию в строке.

Отредактировано 4kpt_II (Янв. 8, 2014 18:03:45)

Офлайн

  • Начало
  • » GUI
  • » Вернуть позицию выделенного фрагмента из окна Tkinter[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version