Есть ли способ для tkcalendar отображать более одного виджета ввода даты?

Я работаю над приложением для ввода в базу данных и использую tkinter и tkcalendar для графического интерфейса с использованием Python 3.8. Я сделал фрагмент кода ниже, иллюстрирующий ошибку, которую я вижу при попытке инициализировать два виджета DateEntry в одном окне.

import tkinter as tk
import tkcalendar as tkdate

class root(tk.Tk):

    def __init__(self, *args, **kwargs):

        tk.Tk.__init__(self, *args, **kwargs)
        container = tk.Frame(self)
        container.grid(row=0, column=0)

        self.DE1 = tkdate.DateEntry(self)
        self.DE1.grid(row=1, column=0)

        self.DE2 = tkdate.DateEntry(self)
        self.DE2.grid(row=2, column=0)


app = root()
app.mainloop()

Трассировка, похоже, не дает много информации, но я все равно вставлю ее сюда; обратите внимание, что несколько экземпляров создаваемого виджета DateEntry, по-видимому, вызывают код выхода 1:

Traceback (most recent call last):
  File "C:/Users/pmo/.PyCharmCE2019.3/config/scratches/scratch_1.py", line 19, in <module>
    app = root()
  File "C:/Users/pmo/.PyCharmCE2019.3/config/scratches/scratch_1.py", line 15, in __init__
    self.DE2 = tkdate.DateEntry(self)
  File "C:\Users\pmo\AppData\Local\Programs\Python\Python38-32\lib\site-packages\tkcalendar\dateentry.py", line 105, in __init__
    self._setup_style()
  File "C:\Users\pmo\AppData\Local\Programs\Python\Python38-32\lib\site-packages\tkcalendar\dateentry.py", line 160, in _setup_style
    self.style.map('DateEntry', **maps)
  File "C:\Users\pmo\AppData\Local\Programs\Python\Python38-32\lib\tkinter\ttk.py", line 403, in map
    self.tk.call(self._name, "map", style, *_format_mapdict(kw)),
_tkinter.TclError: Invalid state name r

Process finished with exit code 1

Любопытно, что я могу без проблем разместить два виджета календаря, но при попытке использовать два или более виджета DateEntry все приложение дает сбой. Я проверил в Интернете, но не вижу никого, у кого была бы эта конкретная проблема с использованием tkcalendar. Кто-нибудь знает, как интерпретировать эту ошибку или, что еще лучше, знает, как ее решить?

Спасибо!


person mooreppj    schedule 11.12.2019    source источник
comment
Известная проблема с tkcalendar и Python 3.8. См. подробности на github.com/j4321/tkcalendar/issues/61.   -  person jasonharper    schedule 11.12.2019


Ответы (1)


На основе ответа и ссылки jasonharper: https://github.com/j4321/tkcalendar/issues/61

Исправление, опубликованное здесь создателем, кажется, решает проблему, когда библиотека обновляется с помощью этого (у меня Windows 10, x64, если это кому-то полезно): https://github.com/j4321/tkcalendar/tree/fix_63

Надеюсь, он будет добавлен в основную библиотеку!

person mooreppj    schedule 11.12.2019