如何在悬停时显示饼图类别?

时间:2016-01-17 22:39:02

标签: python python-2.7 python-3.x tkinter tkinter-canvas

如何通过hoverlabel类型的东西识别每个切片?这个馅饼是平分的,但我想要它,所以当我将鼠标悬停在一个部分上时,它会告诉我该部分代表什么。即,将鼠标悬停在知识切片上,并显示“知识类别”。

    knowledge_slice1 =     (k_weighting1/100) * 360
    thinking_slice1 =      (t_weighting1/100) * 360
    communication_slice1 = (c_weighting1/100) * 360
    application_slice1 =   (a_weighting1/100) * 360

    course1_pie = Canvas(assessmentsframe1, width=255, height=255, bg = 'white')

    course1_pie.create_arc((5, 5, 250, 250), fill = "#FFFFAA",
                           start= 0,
                           extent = knowledge_slice1)

    course1_pie.create_arc((5, 5, 250, 250), fill = "#C0FEA4",
                           start= knowledge_slice1,
                           extent = thinking_slice1)

    course1_pie.create_arc((5, 5, 250, 250), fill = "#AFAFFF",
                           start= knowledge_slice1 + thinking_slice1,
                           extent = communication_slice1)

    course1_pie.create_arc((5, 5, 250, 250), fill = "#FFD490",
                           start= knowledge_slice1 + thinking_slice1 + communication_slice1,
                           extent =application_slice1)

1 个答案:

答案 0 :(得分:1)

我自己是python和Tkinter的新手,但似乎你可能想要使用< Enter>和<离开>事件绑定。例如,这对我有用:

master=Tk()
knowledge_slice1 =     (40.0/100) * 360
thinking_slice1 =      (30.0/100) * 360
communication_slice1 = (20.0/100) * 360
application_slice1 =   (10.0/100) * 360

course1_pie = Canvas(master, width=265, height=265, bg = 'white')
course1_pie.pack()
knowarc=course1_pie.create_arc((5, 5, 250, 250), fill = "#FFFFAA",
   start= 0,
   extent = knowledge_slice1)
thinkarc=course1_pie.create_arc((5, 5, 250, 250), fill = "#C0FEA4",
   start= knowledge_slice1,
   extent = thinking_slice1)
commarc=course1_pie.create_arc((5, 5, 250, 250), fill = "#AFAFFF",
   start= knowledge_slice1 + thinking_slice1,
   extent = communication_slice1)
apparc=course1_pie.create_arc((5, 5, 250, 250), fill = "#FFD490",
   start= knowledge_slice1 + thinking_slice1 + communication_slice1,
   extent =application_slice1)

hover_text=course1_pie.create_text((125,260),text="")

def know_enter(event):
   course1_pie.itemconfig(hover_text,text="Knowledge Category")
def think_enter(event):
   course1_pie.itemconfig(hover_text,text="Thinking Category")
def comm_enter(event):
   course1_pie.itemconfig(hover_text,text="Communication Category")
def app_enter(event):
   course1_pie.itemconfig(hover_text,text="Application Category")
def any_leave(event):
   course1_pie.itemconfig(hover_text,text="")

course1_pie.tag_bind(knowarc,'<Enter>',know_enter)
course1_pie.tag_bind(knowarc,'<Leave>',any_leave)
course1_pie.tag_bind(thinkarc,'<Enter>',think_enter)
course1_pie.tag_bind(thinkarc,'<Leave>',any_leave)
course1_pie.tag_bind(commarc,'<Enter>',comm_enter)
course1_pie.tag_bind(commarc,'<Leave>',any_leave)
course1_pie.tag_bind(apparc,'<Enter>',app_enter)
course1_pie.tag_bind(apparc,'<Leave>',any_leave)