我对 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]'等,那是为了别的。