Python 如何解决tag_加载项Tkinter的问题

Python 如何解决tag_加载项Tkinter的问题,python,tkinter,tags,Python,Tkinter,Tags,我想标记在字符串中插入的特定日期。我使用标记添加。我不知道为什么,但代码不能正常工作。你能检查一下哪里有问题吗 从tkinter导入* 从tkinter导入文本#重命名为ttk 导入tkinter.messagebox 导入日历 text=text() text.pack() text.tag_configure(“dan”,背景为淡灰色,前景为蓝色) #显示日历 月=日历月(2020年,2,2,1) 文本。插入('1.0',月份) #获取一天,索引字符串月份中的一天,然后为该天着色 datum

我想标记在字符串中插入的特定日期。我使用
标记添加
。我不知道为什么,但代码不能正常工作。你能检查一下哪里有问题吗

从tkinter导入*
从tkinter导入文本#重命名为ttk
导入tkinter.messagebox
导入日历
text=text()
text.pack()
text.tag_configure(“dan”,背景为淡灰色,前景为蓝色)
#显示日历
月=日历月(2020年,2,2,1)
文本。插入('1.0',月份)
#获取一天,索引字符串月份中的一天,然后为该天着色
datum=“2020 02 11”
d=基准面分割()
y=int(d[0])
m=int(d[1])
日=d[2]
天=月。查找(天)
text.tag_add('dan',f“{day}.18”,f“{day}.20”)#??也许这里有问题??
text.mainloop()
祝你一切顺利, Domen

您的
月份。find()
返回83。这是字符串开始索引11,因此您告诉标记要做的是从文本框的第83行第18列开始。您可能要做的是将
month
拆分为一个行列表。这可以通过
splitlines()
完成。然后我们写一个for循环来检查哪一行包含日期,然后从那里我们执行
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()
结果:


问题。您所说的重命名为ttk是什么意思?您在此处导入文本两次。这与ttk无关。也就是说您缺少了
Tk()
。您在这里使用
mainloop()
的方式不正确。“工作不正常”是什么意思?你发布的代码是做什么的,它与你期望的有什么不同?你做了什么来调试这个?你看过什么是
f“{day}.18”
,并确认它是正确的值了吗?谢谢,cod运行良好。我只注意到一个问题。。。如果我想标记一天20(2020年),该计划将标记2020年的前20天。是否可以不在第一行开始搜索,而是在第二行或第三行开始搜索?