我正在开发一个关于tkinter的简单(目前为止)GUI。
我现在拥有的是一个GUI窗口,在同一个窗口中有一个canvas
对象和一个树视图表。
我的目标是加载csv
数据生成热图并使用这些位置显示有关所点击位置的更多数据。
我已经可以从csv
生成热图(下图)。
我现在需要的是canvas
检测我的鼠标点击并根据来自相同的点击转移数据(或者不同于它的不同)csv
到桌子。我尝试了一些东西,但我似乎并不了解如何在画布或表格上分配数据以便识别它。
def tableDisplayFromGraph(self):
tableframe = tk.Frame(self.master)
tableframe.grid(row=2, column=10, ipadx=4, pady=2, sticky ="e") ## Packing against tableframe Frame
COLUMNS = ['Type', 'Value'] ## Column Headers for Data
## See Documentation for more info on Treeview
table = ttk.Treeview(tableframe, columns=COLUMNS, show='headings', padding=4)
table.grid(row=0, column=0)
for column in COLUMNS: ## Setting Column Header
table.heading(column, text=column)
scroll = tk.Scrollbar(tableframe, command=table.yview) ## Adding Vertical Scrollbar
scroll.grid(row=0, column=1) # problem how to set scrollbar inside the table :/
table.configure(yscrollcommand=scroll.set) ## Attach Scrollbar :/
def canvas(self):
f = plt.figure(figsize=(8, 8), dpi=110)
a = f.add_subplot(111)
if not self.Data.empty:
pivot_table = self.Data.pivot('Rows', 'Columns', 'B635 Mean')
plt.xlabel('Columns', size=12)
plt.ylabel('Rows', size=12)
plt.title('Heat Map', size=15)
sns.heatmap(pivot_table, annot=True, annot_kws={'size': 8},fmt="0.0f", linewidths=0, square=True, cmap='Reds')
#a.clear()
canvasFig = FigureCanvasTkAgg(f, master=self.master)
canvasFig.get_tk_widget().grid(row=0, column=0, rowspan=5, columnspan=5, padx=30, pady=10, sticky="ew")
navigatorFrame = tk.Frame(self.master)
navigatorFrame.grid(row=21, column=0, columnspan=5, padx=30, sticky="nw")
toolbar = NavigationToolbar2TkAgg(canvasFig, navigatorFrame)
toolbar.update()
canvasFig._tkcanvas.grid()
f.canvas.mpl_connect('pick_event', self.pick)
def pick(self, event):
if canvas.find_withtag(CURRENT):
canvas.itemconfig(CURRENT, fill="blue")
canvas.update_idletasks()
canvas.after(200)
canvas.itemconfig(CURRENT, fill="red")
canvas.bind("<Button-1>", self.pick)enter code here
当我在热图周围盘旋时,画布不会显示x,y坐标。 pick是我的click事件的函数。 任何帮助将不胜感激。
这是我的GUI的图像。左边是我的热图,右边是我的表树视图小部件,用于显示更多数据: