0

我对 Tkinter 相当陌生,但我在某些 ttk 功能上遇到了麻烦。

目前,我有一个 ttk.notebook,在笔记本的每个选项卡中,我都打包了一堆按钮和标签。这些按钮正在离开笔记本的屏幕,所以我试图为每个选项卡实现一个滚动条。但是,我无法弄清楚如何做到这一点。

我正在使用 for 循环遍历我想要制作的每个选项卡。对于每次迭代,我都会制作一个新框架并在那里添加我所有的东西。每当我运行它时,除了最后一个选项卡之外的所有选项卡都有一个灰色的滚动条。只有笔记本的最后一个选项卡具有正常工作的滚动条。有人可以帮忙吗?

    for i,t in enumerate(wb[data][1]):
    if t.value:
        classes.append(t.value)
        mf = tk.Frame(table)
        mf.pack(fill='both',expand=True)

        bframe = tk.Frame(mf,width=120)
        bframe.pack(side=tk.LEFT)
        cv = tk.Canvas(mf,width=460)
        cv.pack(side=tk.RIGHT,fill='both')

        scrollbar = ttk.Scrollbar(mf, orient=tk.VERTICAL, command=cv.yview)
        scrollbar.pack(side=tk.RIGHT,fill=tk.Y)

        cv.configure(yscrollcommand=scrollbar.set)
        cv.bind('<Configure>', lambda e: cv.configure(scrollregion=cv.bbox("all")))

        tab = tk.Frame(cv)
        cv.create_window((0,0), window=tab, anchor='nw')

        b1 = tk.Button(bframe,text='Add Sessions',width=15,height=3)
        b1.pack()
        b2 = tk.Button(bframe,text='Cancel Class',width=15,height=3, command=lambda: cancelClass(data,table.tab(table.select(), 'text')))
        b2.pack()
        b3 = tk.Button(bframe,text='Edit',width=15,height=3)
        b3.pack()

        for rw in range(2,wb[data].max_row+1):
            tk.Label(tab,text=f'{wb[data].cell(row=rw,column=i+1).value}: {wb[data].cell(row=rw,column=i+2).value}').pack()
        tab.update()
        
        table.add(mf,text=t.value)

这就是我目前正在做的事情。忽略'wb [data]'等,那是为了别的。

4

0 回答 0