Проблема с запуском виджета DateEntry в tkcalendar внутри другого класса.Python

Программы на Python
Anonymous
Проблема с запуском виджета DateEntry в tkcalendar внутри другого класса.

Сообщение Anonymous »

Я хочу написать класс, который создает парный флажок и соответствующий виджет DateEntry любое количество раз, когда создается новый экземпляр.
Все экземпляры являются дочерними элементами одного окна, этот класс должен иметь возможность манипулировать дату в виджете DateEntry следующим образом:
  • Если она инициируется как checkNdate(window, "Fecha de solicitud", ""), тогда экземпляр должен отображать флажок, установленный в FALSE, и НЕ ПОКАЗЫВАТЬ виджет DateEntry
  • Если он инициируется как определенная дата, например checkNdate( window, "Fecha de solicitud", "16-05-2024"), флажок должен быть установлен как TRUE и ПОКАЗАТЬ виджет DateEntry в выбранную дату.
  • Если виджет был загружен в первом случае, как только мы установим флажок и установим для него значение TRUE, должен появиться виджет DateEntry, и пользователь должен выбрать дату.
  • Если для флажка установлено значение FALSE после того, как оно установлено в TRUE, виджет DateEntry должен быть скрыт.
  • Целью этого является то, что другая кнопка будет подключаться к таблице SQL и отправлять даты из виджетов DateEntry, для соответствующего флажка которых установлено значение TRUE, или отправлять None, если флажок установлен FALSE.
import tkinter as tk
from tkinter import ttk
from tkcalendar import DateEntry

class checkNdate(ttk.Frame):
def __init__(self, parent: ttk.Widget, checkButton_name: str, date_or_none):
super().__init__(master=parent)

# layout of the widgets
self.rowconfigure(0, weight = 1)
self.columnconfigure((0 , 1), weight = 1, uniform = "a")

# set the checkbutton
ttk.Checkbutton(master = self, text = checkButton_name, ).grid(row = 0, column = 0, sticky = "nsew")
# show the calendar if date exists
if date_or_none != (None or ""):
# code to check in which case we are, ignore this print
print("date is :", date_or_none)

# calling this DateEntry widget creates the error.
cal = DateEntry(master=parent)
cal.grid(row = 0, column = 1)
cal.set_date(date_or_none)

#DateEntry.set_date(date_or_none)
else:
# code to check in which case we are, ignore this print
print("date is :", date_or_none)

self.pack()

# this next code only is for testing purposes
window = tk.Tk()
window.title = "check n' date"
window.geometry("300x300")

# widgets for testing purposes
checkNdate(window, "Fecha de solicitud", "")
checkNdate(window, "Fecha de solicitud", "16-05-2024")

# run
window.mainloop()

Я знаю, что до сих пор код не привязывал флажок к созданию или уничтожению виджета DateEntry, но моя текущая проблема заключается в том, что эта ошибка появляется, когда я пытаюсь загрузить DateEntry. на этих двух примерах. Я думаю, это проблема наследования классов, но я не уверен
date is :
date is : 16-05-2024
Traceback (most recent call last):
File "/Users/hidari/Coding/cs50py/project/prueba_class_check_calendar.py", line 42, in
checkNdate(window, "Fecha de solicitud", "16-05-2024")
File "/Users/hidari/Coding/cs50py/project/prueba_class_check_calendar.py", line 24, in __init__
cal = DateEntry(master=parent)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/tkcalendar/dateentry.py", line 123, in __init__
self._top_cal = tk.Toplevel(self)
^^^^^^^^^^^^^^^^^
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/tkinter/__init__.py", line 2695, in __init__
self.title(root.title())
^^^^^^^^^^^^
TypeError: 'str' object is not callable


Подробнее здесь: https://stackoverflow.com/questions/785 ... ther-class

Вернуться в «Python»