本文整理汇总了Python中matplotlib.backends.backend_tkagg.FigureCanvasTkAgg.tag_bind方法的典型用法代码示例。如果您正苦于以下问题:Python FigureCanvasTkAgg.tag_bind方法的具体用法?Python FigureCanvasTkAgg.tag_bind怎么用?Python FigureCanvasTkAgg.tag_bind使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类matplotlib.backends.backend_tkagg.FigureCanvasTkAgg
的用法示例。
在下文中一共展示了FigureCanvasTkAgg.tag_bind方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: LeftFrame
# 需要导入模块: from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg [as 别名]
# 或者: from matplotlib.backends.backend_tkagg.FigureCanvasTkAgg import tag_bind [as 别名]
#.........这里部分代码省略.........
def affiche_grille(self, grille): # Ne pas oublier de faire un rescale après appel à cette fonction !!!
"""
Affiche la grille passée en paramètre dans la partie gauche de la fenêtre
:param grille: grille représentant le dépôt constituée de 3 éléments :
- un tuple pour le nombre de lignes et de colonnes
- une liste représentant les lignes du dépôt avec les '0' et '1'
- une liste pour les coordonnées du point de départ, d'arrivée, et l'orientation du robot au départ
:type grille: list
"""
self.clean()
# Récupération des éléments de la grille
self.nb_lignes, self.nb_colonnes = grille[0]
lignes = grille[1]
ligne = grille[2]
self.canvas = Canvas(self, width=leftframewidth, height=leftframeheight)
# Récupération des données du problème
self.pas_colonne = leftframewidth//(self.nb_colonnes + 2)
self.pas_ligne = leftframeheight//(self.nb_lignes + 2)
rayon = 1/2 # rayon des cercles du robot au départ et à l'arrivée
# Dessin du quadrillage
for i in range(0, self.nb_lignes):
for j in range(0, self.nb_colonnes):
if lignes[i][j] == '0':
rectangle(self.canvas, j, i, j+1, i+1)
else:
rectangle(self.canvas, j, i, j+1, i+1, color=couleur_obstacles)
# Dessin du point de départ du robot avec sa flèche
dessine_depart(self.canvas, int(ligne[1]), int(ligne[0]), rayon, ligne[-1])
# Dessin du point d'arrivée du robot
cercle(self.canvas, int(ligne[3]), int(ligne[2]), rayon)
self.canvas.pack()
def affiche_chemin(self, grille, chemin_list, chemin_str):
"""
Affiche la grille et le chemin le plus rapide du robot entre son point de départ et d'arrivée
:param grille: grille représentant le dépôt constituée de 3 éléments (cf affiche_grille)
:param chemin_list: liste de coordonnées des points empruntés par le robot dans sont chemin
:param chemin_str: chaine de caractères résultat du calcul du chemin le plus rapide dans cette grille
:type grille: list
:type chemin_list: list
:type chemin_str: str
"""
# Affichage de la grille elle-même
self.affiche_grille(grille)
# Ajout du chemin par des lignes
for i in range(1, len(chemin_list)):
self.canvas.create_line(chemin_list[i-1][1], chemin_list[i-1][0],
chemin_list[i][1], chemin_list[i][0], width=3)
# on redessine le point de départ pour que ce soit plus "joli"
ligne = grille[2]
rayon = 1/2
dessine_depart(self.canvas, int(ligne[1]), int(ligne[0]), rayon, ligne[-1])
self.canvas.create_text(0, self.nb_lignes+1/2, text=chemin_str, font=("Helvetica", 10), anchor=NW)
self.rescale()
def modifier_grille(self):
"""
Ajoute un lien entre clic gauche et les rectangles de la grille
pour pouvoir modifier leur statut (obstacle ou non)
"""
self.canvas.tag_bind("case", "<Button-1>", self.toggle_obstacle)
def toggle_obstacle(self, event):
"""
Changement du status (obstacle ou non) d'un rectangle de la grille lorsqu'on clique dessus
:param event: clic gauche sur un rectangle
"""
# Récupération du rectangle sur lequel on a cliqué
w = event.widget.find_closest(event.x, event.y)
ligne = (w[0]-1)//self.nb_colonnes
colonne = (w[0]-1) % self.nb_colonnes
# Changement de la grille elle-même en changeant la case correspondante,
# et changement de la couleur du rectangle
if self.parent.grilles[0][1][ligne][colonne] == '1':
self.parent.grilles[0][1][ligne][colonne] = '0'
self.canvas.itemconfig(w, fill="white")
else:
self.parent.grilles[0][1][ligne][colonne] = '1'
self.canvas.itemconfig(w, fill=couleur_obstacles)
def affiche_patienter(self):
"""
Demande à l'utilisateur de patienter pendant le calcul des statistiques qu'il a demandées
"""
self.clean()
label = Label(self, text="Patientez s'il vous plaît\nCalcul des statistiques en cours", font=("Helvetica", 50))
label.grid()
def affiche_plot(self, figure):
"""
Affichage dans la fenêtre du plot correspondant aux statistiques demandées
:param figure: élément figure matplotlib à afficher
"""
self.clean()
self.canvas = FigureCanvasTkAgg(figure, master=self)
self.canvas.show()
self.canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
toolbar = NavigationToolbar2TkAgg(self.canvas, self)
toolbar.update()
self.canvas._tkcanvas.pack(side=TOP, fill=BOTH, expand=1)