首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从for循环中创建的按钮中选择特定的行?

如何从for循环中创建的按钮中选择特定的行?
EN

Stack Overflow用户
提问于 2018-12-16 23:30:37
回答 1查看 46关注 0票数 0

我已经使用for循环创建了一个按钮网格(就其目的而言,效率要高得多),但是我希望能够说明的是,例如,如果选择了第二行上的任何按钮,它将具有与选择第一行上的按钮不同的命令。

代码语言:javascript
复制
    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)

这就是创建按钮的地方,如果这能帮助任何人识别如何获得我想要的东西。

一个更好的选择是打印所选按钮的编号,但我不确定这是否可行,因为按钮的文本在循环中从来不是恒定的。

EN

回答 1

Stack Overflow用户

发布于 2018-12-17 01:45:01

这应该是可行的:

代码语言:javascript
复制
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)

你的代码很难读,但这与你的问题无关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53803643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档