2016-06-12 3 views
1

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

Изображения: problem problem cont

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 

ответ

0

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

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

Это должно работать нормально.

0

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

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

Смежные вопросы