You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Tkcalendar的DateEntry未在注册窗口打开,显示于登录主窗口

问题解决:DateEntry组件显示位置错误及数据绑定修复

核心问题原因

创建DateEntry组件时未指定父窗口,Tkinter组件默认将主窗口(root)作为父容器,导致组件出现在登录窗口而非注册窗口。同时原代码未将DateEntry与dobentered变量绑定,无法获取选中的日期值。

修改步骤

  1. 修正DateEntry的父容器与数据绑定
    在registerWindow类的__init__方法中,替换原DateEntry创建代码:
# 原错误代码
# self.cal = DateEntry(selectmode='day').grid(row=2,column=1)

# 修改后的代码
self.cal = DateEntry(self.master, selectmode='day', textvariable=self.dobentered)
self.cal.grid(row=2, column=1)
  • self.master指定组件的父窗口为注册窗口(Toplevel实例)
  • textvariable=self.dobentered将组件选中值与你定义的变量绑定,后续可通过self.dobentered.get()直接获取日期字符串
  1. 补充性别下拉框的数据绑定(可选)
    原代码中性别Combobox未绑定到genderentered变量,无法获取选中值,可同步修改:
# 原代码
# self.genderBox = Combobox(self.master, values = ["Male","Female"])

# 修改后的代码
self.genderBox = Combobox(self.master, values=["Male","Female"], textvariable=self.genderentered)

验证效果

修改后点击注册按钮,DateEntry会正确显示在注册窗口内,选择日期后,inputuser方法中的dobentered = self.dobentered.get()可直接获取符合YYYY-MM-DD格式的日期,适配现有验证逻辑,验证通过后可正常存入数据库。

内容的提问来源于stack exchange,提问作者dexta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:42:07