tkinter+sqlite3开发员工管理系统matplotlib绘图失败如何解决
绘图功能修复说明
需要修改的错误点如下:
- 数据库连接语句错误:
connect(project.db)中的project.db属于字符串参数,必须用单引号/双引号包裹,否则Python会将project识别为未定义变量直接报错。 - 绘图数据源为空:你从数据库查询得到的
data结果集没有填充到name和salary列表中,两个空列表无法生成折线图。 - 图表显示方法未调用:
plt.show是可调用的函数对象,必须添加括号写成plt.show()才会触发弹窗显示图表的逻辑。 - 附带逻辑错误:
graphback函数中的main_window.withdraw也缺少括号,会导致返回主窗口的逻辑异常。
以下为修正后的完整代码,默认假设你的employee表字段顺序为【id、姓名、薪资】,如果你的表字段顺序不同,调整遍历data时的索引值即可:
from tkinter import * from tkinter.messagebox import * from tkinter.scrolledtext import * from sqlite3 import * import matplotlib.pyplot as plt def graphback(): graph_window.deiconify() main_window.withdraw() # 补充括号执行窗口隐藏方法 def graph(): con = None try: con = connect("project.db") # 给数据库名添加引号 cursor = con.cursor() sql = "select * from employee" cursor.execute(sql) data = cursor.fetchall() name = [] salary = [] # 遍历查询结果填充绘图数据源 for emp in data: name.append(emp[1]) # 取第二列作为员工姓名,可根据实际表结构调整索引 salary.append(emp[2]) # 取第三列作为员工薪资,可根据实际表结构调整索引 plt.plot(name, salary) plt.title("Highest Salaried Employee") plt.show() # 补充括号执行图表显示方法 except Exception as e: showerror("issue ", e) if con: # 避免连接为空时执行回滚报错 con.rollback() finally: if con is not None: con.close() def mgraph(): main_window.deiconify() graph_window.withdraw()
内容的提问来源于stack exchange,提问作者Sharii
相关产品推荐
相关产品推荐

