Как разработать календарь 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)