Как разработать календарь GUI на Python?

Вот код, который у меня сейчас есть... Мой класс едва представил Tkinter, и книга, которую мы используем, не помогает понять, как использовать библиотеку Calendar. Метки Mon/Tu/Wed/Etc работают, но календарь не отображается.

Изображения: проблема проблема продолжение

from tkinter import *
from time import *
from calendar import *
class Application(Frame):

    def __init__(self, master):
        Frame.__init__(self, master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):

        days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
#create labels
        for i in range(7):
            label = Label(self, text=days[i])
            label.grid(row = 0, column = i)

        weekday, numDays = monthrange(year, month)
        week = 1
        for i in range(1, numDays + 1):
            button = Button(self, text = str(i))
            button.grid(row = week, column = weekday)

            weekday+=1
            if weekday > 6:
                week +=1
                weekday = 0

2 ответа

Во-первых, вы должны рассмотреть, в конце концов, создание основного цикла:

root = tk()
app = Application(root)
root.mainloop()

Теперь должно работать нормально.

Попробуй это:

from tkinter import *
from calendar import *


class Application(Frame):

    def __init__(self, master):
        Frame.__init__(self, master)
        self.grid()

        year = int(raw_input('\nEnter Year eg. 2017\n'))
        month = int(raw_input('\nEnter month number.\n'))
        self.create_widgets(year, month)

    def create_widgets(self, year, month):

        days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
#create labels
        for i in range(7):
            label = Label(self, text=days[i])
            label.grid(row = 0, column = i)

        weekday, numDays = monthrange(year, month)
        week = 1
        for i in range(1, numDays + 1):
            button = Button(self, text = str(i))
            button.grid(row = week, column = weekday)

            weekday += 1
            if weekday > 6:
                week += 1
                weekday = 0


mainWindow = tk()
obj = Application(root)
mainWindow.mainloop()

При расчете monthrange() year а также month переменные были не определены. Так что я сделал, я взял данные для этих переменных из __init__() Само собой, поэтому в начале программы было бы задать месяц и год. Получив это, я просто передал его create_widget() в качестве параметра, которые затем были использованы в monthrange(), Также добавлено mainloop

Программа Python для печати календаря на данный год

импорт библиотеки календаря

import calendar 

def printcalendar(year): 

# printing calendar 
print(calendar.calendar(2020)) 


year = 2020
printcalendar(year) 
Другие вопросы по тегам