我想做一个页面,右边有一些标签,左边有一些其他标签和它们各自的滚动条。但我没能做到
from tkinter import *
root = Tk()
root.columnconfigure(0, weight=1)
root.columnconfigure(2, weight=1)
canvasL = Canvas(root, bg='blue')
canvasL.grid(row=0, column=0, sticky="news")
canvasR = Canvas(root, bg='blue')
canvasR.grid(row=0, column=2, sticky="news")
frameL = Frame(canvasL, bg='red', width=1000)
frameL.grid(row=0, column=0, sticky="news")
frameR = Frame(canvasR, bg='red')
frameR.grid(row=0, column=0, sticky="news")
frameL.grid_propagate(False)
frameR.grid_propagate(False)
S1 = Scrollbar(frameL, orient="vertical", command=canvasL.yview)
S1.grid(row=0, column=1, sticky="news")
S2 = Scrollbar(frameR, orient="vertical", command=canvasR.yview)
S2.grid(row=0, column=3, sticky="news")
canvasL.configure(yscrollcommand=S1.set)
canvasL.configure(scrollregion=canvasL.bbox("all"))
canvasR.configure(yscrollcommand=S2.set)
canvasR.configure(scrollregion=canvasR.bbox("all"))
canvasL.create_window((0, 0), anchor='nw', window=frameL)
canvasR.create_window((0, 0), anchor='nw', window=frameR)
for i in range(0, 40):
labelName = Label(frameL, text="Name : " + str(i), bg='#F5F5F5')
labelName.grid(row=i, column=0)
labelName = Label(frameR, text="Name : " + str(i), bg='#F5F5F5')
labelName.grid(row=i, column=2)
root.mainloop()
如果您测试这段代码,就会发现有问题。你能帮我吗? 先谢谢你
检查我的答案:
对于
canvas
上的scroll widget
,请按照以下步骤操作:canvas.create_window
创建窗口李>你们可以在评论中讨论额外的问题
这一修正解决了问题。玩它。还要学习如何使用ttk来美化您的GUI
首先,不应执行以下两行:
因为您不应该使用
grid()
或pack()
或place()
将小部件放入画布。然后你用create_window(...)
把它们放到画布上第二,两个滚动条的父级应该是
root
:此外,也不应执行以下两行:
因为它们可能使两个框架的高度为零
最后,在调用
root.update()
之后,您必须调用以下两行:但最好在调整帧大小时更新
scrollregion
:以下是基于您的修改示例:
相关问题 更多 >
编程相关推荐