Было несколько проблем.
Вы используете как пакет, так и сетку в __init__
.
Поскольку вы импортируете Calendar.py, его нет в вашей папке с именами, и вы должны компенсировать это.Имя будет равно Calendar.Calendar
, поскольку пакет и класс называются Calendar.
Используйте кнопки вместо меток и свяжите их с командой, чтобы открыть календарь.
Сохраните ссылку на мастер, чтобы вы могли ее вызвать.
Я также связал ПРОБЕЛ с функцией распечатки.
import tkinter as tk
import Calendar
class Application(tk.Frame):
def __init__(self, master = None):
super().__init__(master)
self.master = master
self.grid()
self.data = {}
self.create_widgets()
def create_widgets(self):
self.winfo_toplevel().title("Choose date")
self.sd_button = tk.Button(self, text="Start date", command=self.popup)
self.sd_button.grid()
self.ed_button = tk.Button(self, text="End date", command=self.popup)
self.ed_button.grid()
self.master.bind('<space>', self.print_selected_date)
def popup(self):
child = tk.Toplevel()
cal = Calendar.Calendar(child, self.data)
def print_selected_date(self, event):
print(self.data)
root = tk.Tk()
my_gui = Application(root)
root.mainloop()
Класс Control
не является частью календаря, но включен в качестве примера того, как его использовать.Это распространенный способ построения пакетов.Ищите строку if __name__ == '__main__':
и там будет пример.