求助:关于matplotlib的图表在FigureCanvasTkAgg画布中摆放位置的问题
本帖最后由 yysscc 于 2019-3-29 20:01 编辑from tkinter import *
import pymysql
from pandas import *
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from matplotlib.pylab import mpl
db = pymysql.connect('localhost','root','root','medicine')
cur = db.cursor()
sql = 'select * from user'
cur.execute(sql)
user_x = []
user_y = []
results = list(cur.fetchall())
for row in results:
user_x.append(row)
user_y.append(row)
x = user_x
y = user_y
data = np.array()
df = DataFrame(data.T,columns=["账号","密码"])
matplotlib.use('TkAgg')
mpl.rcParams['font.sans-serif'] = ['SimHei']
root = Tk()
f = plt.figure()
a = f.add_subplot(111,frameon=False,xticks=[],yticks=[]) #第一个问题的点应该在这,table是在这个坐标系上面的,我想应该能改变坐标系位置来改变table位置
a.set_title("这是第一副图",loc='center',pad=20,fontsize='xx-large')
table = plt.table(cellText=data.T,colLabels=["账号","密码"],rowLabels=df.index,colWidths=*data.shape,loc='center',cellLoc='center')
table.set_fontsize(15)
table.scale(5,3)
canvas = FigureCanvasTkAgg(f, master=root)
canvas.draw()
canvas.get_tk_widget().grid(row=0, columnspan=3) #第二个问题大概在这里,应该能通过设置参数让canvas延长,请大佬帮忙指教。
root.mainloop()有两个问题:第一个是如何设置table在canvas中的位置呢,我想让它靠左边,而不是居中,
第二个是如何设置能让canvas自动向下延伸,就是说表格长的话canvas能延长把所有表格包裹进去
等级太低不能发图片,大佬见谅
同求!有大佬知道吗?? 个人建议:
1. 放弃这种matplotlib内嵌的方式,因为这会搞得很复杂或难以实现,这不是matplotlib擅长的。
2. 分两步来解决:先将 table图片化保存,再用tkinker单独将图片展示出来,这样只要你会用tkinter的grid()方法就可以解决问题。
3. 或者 不图片化,而是 直接用tkinter的Treeview来展示 表格数据。(推荐)
页:
[1]