首页 > 编程问答 >tkcalendar 与 ttkbootstrap 兼容性问题

tkcalendar 与 ttkbootstrap 兼容性问题

时间:2024-07-23 04:51:21浏览次数:8  
标签:python tkinter ttk tkcalendar ttkbootstrap

我在 python 脚本中使用 ttkbootstrap 。我尝试使用 ttkbootstrap 中的 DateEntry,但它不会像 tkcalendar 那样触发事件(至少我找不到任何东西),而且我喜欢 tkcalendar 侧面有一个星期计数器。

所以我会喜欢使用 tkcalendar DateEntry 而不是 ttkbootstrap DateEntry。现在,它本身可以完美工作,但当我一起使用 ttkbootstrap 和 tkcalendar 时,我总是得到

AttributeError: 'DateEntry' object has no attribute '_calendar'

这是我的代码,不起作用:

import ttkbootstrap as ttk
from tkcalendar import DateEntry

#setup the window
pwin = ttk.Window(themename="cyborg")
pwin.title('test')

#function to get the date
def seedate():
print(cal.get_date())

#this is he DateEntry widget
cal =  DateEntry(pwin,bootstyle="info")
cal.place(x=10, y=80)

#button to get the selected date
btnpt = ttk.Button(pwin, text="Save Schedule", bootstyle="light-outline", command=seedate)
btnpt.place(x=10, y=140)

pwin.mainloop()

When我使用 ttkbootstrap DateEntry 代替,它立即起作用。

我尝试更新这两个模块,但它不起作用。并切换到 ttkbootstram DateEntry,然后就可以了。


你遇到的问题在于, tkcalendar.DateEntry ttkbootstrap 的样式不兼容。 ttkbootstrap 主要为 Tkinter 的主题小部件 (ttk) 设计,而不是像 tkcalendar.DateEntry 这样的纯 Tkinter 小部件。

当你尝试使用 bootstyle 参数来设置 tkcalendar.DateEntry 的样式时, ttkbootstrap 会试图修改它,但由于 tkcalendar.DateEntry 没有 _calendar 属性(这是 ttkbootstrap 预期 ttk 小部件具有的属性),所以导致了错误。

解决这个问题的方法有几种:

1. 不使用 ttkbootstrap 样式:

最简单的解决方法是不要在 tkcalendar.DateEntry 上使用 bootstyle 参数。这将保持 tkcalendar.DateEntry 的默认外观,但不会与 ttkbootstrap 主题发生冲突。

cal =  DateEntry(pwin)

2. 使用 ttkcalendar (如果可用):

如果 tkcalendar 提供了基于 ttk 的 DateEntry 版本 (例如 ttkcalendar ),你可以尝试使用它。 这将允许 ttkbootstrap 正确应用样式。

3. 创建自定义 ttkbootstrap 样式:

你可以创建自定义 ttkbootstrap 样式来专门针对 tkcalendar.DateEntry 。但这需要对 ttkbootstrap 的样式机制有深入了解,并且可能比较复杂。

4. 使用其他日期选择器小部件:

你可以考虑使用其他与 ttkbootstrap 兼容的日期选择器小部件,例如:

  • tkinter.ttk.Spinbox: 你可以使用三个 Spinbox 小部件来分别选择年、月和日。
  • 第三方库: 有一些第三方库提供了与 ttkbootstrap 兼容的日期选择器小部件,例如 tkinterdnd2

选择哪种方法取决于你的具体需求和技术水平。

标签:python,tkinter,ttk,tkcalendar,ttkbootstrap
From: 78780436

相关文章

  • 试图理解这个错误:致命的Python错误:PyEval_RestoreThread:该函数必须在持有GIL的情况下
    我有一个小型tkinter应用程序,我一直在其中实现最小的“拖放”,主要作为学习实验。我真正关心的是删除文件的文件路径。一切实际上都工作正常,直到我尝试在拖放后打包标签小部件。下面的最小工作示例。有问题的行会用注释指出。我通常不会在调试方面遇到太多麻烦,但我只是不知......
  • 如何使代码格式再次适用于 Python(Mac 上的 Visual Studio Code)?
    在Mac上,Option+Shift+F现在会显示“没有安装用于‘python’文件的格式化程序”。消息框:我尝试安装这个插件,但没有看到这种情况的变化:我已经为Python安装了这两个插件:但是正如@starball提到的,它可能已经减少了支持现在。......
  • 无法在 python 中安装 pip install expliot - bluepy 的 Building Wheel (pyproject.t
    在此处输入图像描述当我尝试在Windows计算机中通过cmd安装pipinstallexpliot包时,我收到2个错误名称×Buildingwheelforbluepy(pyproject.toml)didnotrunsuccessfully.│exitcode:1**AND**opt=self.warn_dash_deprecation......
  • python 用单斜杠-反斜杠替换url字符串中的双斜杠
    我的URL包含错误的双斜杠(“//”),我需要将其转换为单斜杠。不用说,我想保持“https:”后面的双斜杠不变。可以在字符串中进行此更改的最短Python代码是什么?我一直在尝试使用re.sub,带有冒号否定的正则表达式(即,[^:](//)),但它想要替换整个匹配项(包括前面......
  • 如何使用 Selenium Python 搜索 Excel 文件中的文本
    我有一些数据在Excel文件中。我想要转到Excel文件,然后搜索文本(取自网站表),然后获取该行的所有数据,这些数据将用于在浏览器中填充表格。示例:我希望selenium搜索ST0003然后获取名称,该学生ID的父亲姓名,以便我可以在大学网站中填写此信息。我想我会从网站......
  • Python 套接字请求在很多情况下都会失败
    我在python中尝试了超过5种不同的方法,尽管人们说它在其他论坛上有效,但所有这些方法都惨遭失败。importsocketmessage="test"clientsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)clientsocket.connect(('1.1.1.1',80))clientsocket.send(mes......
  • Python 网络套接字
    我一直尝试通过Python访问该网站的websocket,但是需要绕过CloudFlare,现在我尝试通过cookie进行绕过,但是这不起作用。我已经尝试在没有cookie的情况下执行此操作,但这也不起作用。importwebsocketimportbase64importosdriver=selenium.webdriver.Firefox()driver.ge......
  • 如何在Python中使用Selenium提取data-v-xxx?
    因为我想查看每个class='num'内的文本是否大于0。如果测试通过,那么我需要获取venuen-name内的文本。我观察到,data-v是相同的。所以我的方法是获取相同的data-v-<hashvalue>来查找场地名称。我尝试了不同的方法来提取,但仍然无法提取。有什么建议吗?这是DOM<div......
  • Python:添加异常上下文
    假设我想提出一个异常并提供额外的处理信息;最好的做法是什么?我想出了以下方法,但对我来说有点可疑:definternal_function():raiseValueError("smellysocks!")defcontext_function():try:internal_function()exceptExceptionase:......
  • 【视频】Python遗传算法GA优化SVR、ANFIS预测证券指数ISE数据-CSDN博客
    全文链接:https://tecdat.cn/?p=37060本文旨在通过应用多种机器学习技术,对交易所的历史数据进行深入分析和预测。我们帮助客户使用了遗传算法GA优化的支持向量回归(SVR)、自适应神经模糊推理系统(ANFIS)等方法,对数据进行了特征选择、数据预处理、模型训练与评估。实验结果表明,这些方法......