如何将DateEntry组件选中日期插入MySQL数据库?遇get属性报错求解
解决DateEntry调用get()报错“没有get属性”的问题
核心问题:变量名不匹配
你的代码中创建DateEntry用的是t1 = DateEntry(self.root),但布局却执行cal.pack(),变量名完全不一致。要么是你把DateEntry的实例名写错成了cal,要么是t1根本没被正确布局/初始化,导致调用t1.get()时,t1并非有效的DateEntry实例。修复步骤
统一变量名:确保创建实例、布局、调用方法用同一个变量名。比如:
# 创建实例 cal = DateEntry(self.root) # 布局 cal.pack() # 获取日期 selected_date = cal.get()或者:
t1 = DateEntry(self.root) t1.pack() selected_date = t1.get()确认使用tkcalendar库的DateEntry:标准tkinter没有内置DateEntry组件,必须使用
tkcalendar库的实现:- 先安装库:
pip install tkcalendar - 正确导入:
from tkcalendar import DateEntry
其他第三方库的DateEntry可能方法名不同(比如部分库用get_date()),优先用tkcalendar的实现,它的get()方法是标准用法。
- 先安装库:
排查其他问题:
- 检查是否误导入了其他同名的DateEntry类
- 尝试更新tkcalendar到最新版本:
pip install --upgrade tkcalendar
正确示例代码
from tkcalendar import DateEntry import tkinter as tk def insert_to_db(date_str): # 这里写你的数据库插入逻辑 print(f"插入日期:{date_str}") root = tk.Tk() # 创建并布局DateEntry cal = DateEntry(root) cal.pack() # 绑定获取日期并插入数据库的按钮 tk.Button(root, text="提交日期", command=lambda: insert_to_db(cal.get())).pack() root.mainloop()
内容的提问来源于stack exchange,提问作者val
相关产品推荐
相关产品推荐

