我已经使用for循环创建了一个按钮网格(就其目的而言,效率要高得多),但是我希望能够说明的是,例如,如果选择了第二行上的任何按钮,它将具有与选择第一行上的按钮不同的命令。
curDay = 1
for i in range(35):
if len(rows[0].slaves()) == 7:
rows.pop(0)
temp = ButtonsWrap(rows[0], curMonth,curDay,text='',height=1,width=2)
temp.button.pack(side='left')
buttons.append(temp)
if curDay <= months[curMonth]:
temp.button.config(text=curDay,command=lambda:[f() for f in[lambda: bid(i),temp.popup]])
curDay += 1
def bid(self):
print(i)
这就是创建按钮的地方,如果这能帮助任何人识别如何获得我想要的东西。
一个更好的选择是打印所选按钮的编号,但我不确定这是否可行,因为按钮的文本在循环中从来不是恒定的。
发布于 2018-12-17 01:45:01
这应该是可行的:
def makeCalendar(blank):
curMonth = int(dropMonths.get())
for i in buttons:
if i.thing:
i.thing.destroy()
for i in newFrame.slaves():
i.destroy()
rows = [Frame(newFrame) for i in range(5)]
[i.pack() for i in rows]
curDay = 1
for i in range(35):
if len(rows[0].slaves()) == 7:
rows.pop(0)
temp_button = ButtonsWrap(rows[0], curMonth, curDay, text='', height=1,
width=2)
temp_button.button.pack(side='left')
if curDay <= months[curMonth]:
temp_button.button.configure(text=curDay, command=lambda TMP=i: bid(TMP))
curDay += 1
buttons.append(temp_button)
def bid(i):
print(i)
你的代码很难读,但这与你的问题无关。
https://stackoverflow.com/questions/53803643
复制相似问题