如何在Tkinter中显示图例?

时间:2013-10-26 03:32:19

标签: python tkinter

我希望在Tkinter中显示我的传奇,就像在matplotlib中一样。

说我在我的风筝上有这三行:

from Tkinter import Button, Canvas, Tk

root = Tk()

canvas = Canvas()
canvas.grid()

canvas.create_line(0, 0, 20, 20, fill='green', width=2, tags='line1')
canvas.create_line(30, 30, 40, 40, fill='red', width=2, tags='line2')
canvas.create_line(50, 50, 60, 60, fill='blue', width=2,tags='line3')

root.mainloop()

如何在画布的左下角设置图例,如下所示:

-------------------------
|   ——————     line1    |
|   ——————     line2    |
|   ——————     line3    |
-------------------------

上面的ASCII图例仅供参考。我真正想要的是一个由内置函数完成的精彩传奇。不过,我不确定它的可行性。

2 个答案:

答案 0 :(得分:0)

没有内置功能来创建图例

您可以使用.create_text()方法在画布上显示文字:

from Tkinter import *

root = Tk()

canvas = Canvas(root)
canvas.grid()

canvas.create_line(0, 0, 20, 20, fill='green', width=2, tags='line1')
canvas.create_line(30, 30, 40, 40, fill='red', width=2, tags='line2')
canvas.create_line(50, 50, 60, 60, fill='blue', width=2,tags='line3')

legend_text = """
-------------------
|   ------     line1    |
|   ------     line2    |
|   ------     line3    |
-------------------"""

legend_frame = LabelFrame(canvas,text='Legend',padx=5, pady=5)
legend_label = Label(legend_frame,text=legend_text)
legend_label.pack()

canvas.create_window(120,200,window=legend_frame,anchor=E)

root.mainloop()

结果:

enter image description here

注意:不幸的是符号不是有效的unicode字符,因此我将其替换为减号-

答案 1 :(得分:0)

画布没有内置的传说设施。它只是一个空白画布,您可以在其上绘制线条,多边形,圆形和图像。您必须编写一个函数来绘制图例。