Как я могу решить проблему с tag_add в Tkinter - PullRequest
0 голосов
/ 07 февраля 2020

Я хочу отметить указанный c день, который я вставляю в строку. Я делаю это с tag_add. Я не знаю почему, но коды не работают правильно. Можете ли вы проверить, где может быть проблема.

from tkinter import *
from tkinter import Text #renames to ttk
import tkinter.messagebox
import calendar

text = Text()
text.pack()
text.tag_configure("dan", background='light grey', foreground='blue')

# Display calendar
month = calendar.month(2020, 2, 2, 1)
text.insert('1.0', month)

# Get a day, index of a day in the string month, and then color the day
datum = "2020 02 11"
d = datum.split()
y = int(d[0])
m = int(d[1]) 
day = d[2]
day = month.find(day)
text.tag_add('dan', f"{day}.18", f"{day}.20") # ?? Maybe problem here??

text.mainloop()

Всего наилучшего, Домен

1 Ответ

2 голосов
/ 07 февраля 2020

Ваш month.find() возвращает 83. Это начальный индекс строки, равный 11, поэтому вы должны указать тегу начать с строки 83 в столбце 18 текстового поля. Что вы, вероятно, хотите сделать, это разделить month на список строк. Это можно сделать с помощью splitlines(). Затем мы записываем в a для l oop, чтобы проверить, в какой строке содержится день, и оттуда мы делаем row.find(), чтобы получить правильный индекс столбца.

Сделайте снимок и дайте мне знать, если у вас есть какие-либо вопросы:

import tkinter as tk
import calendar

root = tk.Tk()
text = tk.Text()
text.pack()
text.tag_configure("dan", background='light grey', foreground='blue')
month = calendar.month(2020, 2, 2, 1)
text.insert('1.0', month)
datum = "2020 02 11"
d = datum.split()
y = int(d[0])
m = int(d[1])
day = d[2]

for ndex, row in enumerate(month.splitlines()):
    if day in row:
        col_index = row.find(day)
        text.tag_add('dan', '{}.{}'.format(ndex+1, col_index), '{}.{}'.format(ndex+1, col_index + len(day)))
        break

text.mainloop()

Результаты:

enter image description here

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