Как выбрать определенные строки из кнопок, созданных в цикле for? - PullRequest
0 голосов
/ 16 декабря 2018

Я создал сетку кнопок, используя цикл 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)

Здесь создаются кнопки, если это помогает кому-то определить, как получить то, что я ищу.

AЛучшей альтернативой было бы напечатать номер выбранной кнопки, но я не уверен, возможно ли это из-за того, что текст кнопок никогда не будет постоянным в цикле.

1 Ответ

0 голосов
/ 16 декабря 2018

Это должно работать:

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)

И ваш код очень трудно читать, но это не о вашем вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...