Python 在tkinter中分别为线条着色?

Python 在tkinter中分别为线条着色?,python,tkinter,Python,Tkinter,我正在尝试编写一个音乐程序,用python显示文件。类似于,我希望和弦、评论和歌词都有不同的颜色。我已经尝试过这些小部件: 我尝试将和弦、注释和歌词分离成多个字符串,这些字符串可以在画布上重叠(每个字符串有不同的颜色)来制作完整的歌曲,但遗憾的是,空白覆盖了以前渲染的文本,因此我只能看到最后一层 标签/信息没有多种颜色的功能,除非为每行制作一个标签,这非常繁琐,因为我希望字体大小也可以调整 文本是可编辑的,我不想要 是否有某种模块或其他tkinter小部件允许使用单独的彩色线条?只需在画布上的不

我正在尝试编写一个音乐程序,用python显示文件。类似于,我希望和弦、评论和歌词都有不同的颜色。我已经尝试过这些小部件:

我尝试将和弦、注释和歌词分离成多个字符串,这些字符串可以在画布上重叠(每个字符串有不同的颜色)来制作完整的歌曲,但遗憾的是,空白覆盖了以前渲染的文本,因此我只能看到最后一层

标签/信息没有多种颜色的功能,除非为每行制作一个标签,这非常繁琐,因为我希望字体大小也可以调整

文本是可编辑的,我不想要


是否有某种模块或其他tkinter小部件允许使用单独的彩色线条?

只需在画布上的不同y位置(高度)绘制单独的线条即可。它是create_text()函数的前两个参数。例如

self.canvas = Canvas(root, width=800, height=650, bg = '#afeeee')
self.canvas.create_text(100,10,fill="darkblue",font="Times 20 italic bold",
                    text="Greensleeves are my...")

因此,在这里,将10更改为所需的行位置等。从复制的代码

您可以通过将文本小部件配置为state=disabled使其成为只读。注意:您需要通过插入内容将状态设置为
normal
。我不理解你关于空白覆盖先前呈现的文本的评论。当我把一个词写在另一个词的上面时,我看不到这一点。第二个字符串中任何有空格的地方,我都可以看到下面的字符。至于文本小部件,它可以被设置为只读。澄清一下,当你说“行”时,你是指“文本行”吗?当谈到画布时,它具有绘制实际线条的能力。@BryanOakley我当时可能把画布弄糟了。关于行,我指的是文本行。但这不再重要了,我通过使用文本小部件实现了这一点:)