如何在Python中的生成器对象中创建个性?

时间:2015-02-24 16:10:24

标签: python callback tkinter generator python-3.3

我正在尝试创建一个允许您从日历中选择日期的GUI。我制作了一个按钮的“日历”,根据当前月份对齐。我希望能够将回调设置为每个按钮以返回它们的特定数据,这就像它们显示的那天一样简单......但是由于按钮是在生成器中创建的,因此用于创建的整数它们是短暂的......

下面的代码,回调函数只返回相同的数字。使用Python 3.3。

import datetime
from tkinter import *
import calendar

today = datetime.date.today()
calendar.setfirstweekday(6)
GUI = Tk()
monthChoiceContainer = Frame(GUI)
monthChoiceContainer.pack()
monthChoice = Label(monthChoiceContainer, text=today.strftime("%B"))
monthChoice.grid(row=0, column=1)
calendarContainer = Frame(GUI)
calendarContainer.pack()
def callback(data):
    print(data)
dayButton = { }
dayLabel = { }
cnth = 0
for items in calendar.weekheader(2).split(" "):
    dayLabel[cnth] = Label(calendarContainer, text=items)
    dayLabel[cnth].grid(row=0, column=cnth)
    cnth+=1
cnth = 0
for lists in calendar.monthcalendar(today.year, today.month):
    for items in lists:
        if items !=0:
            dayButton[cnth] = Button(calendarContainer, text=str(items), width=2,
                                     command=lambda: callback(cnth))
            dayButton[cnth].grid(row=cnth//7+1, column=cnth%7)
        cnth+=1
GUI.mainloop()

我有没有办法让回调函数返回与每个按钮相关的单个数据?

0 个答案:

没有答案