水平滚动条没有放在我想要的位置



我正在尝试创建一个简单的python GUI应用程序。我正确地添加了垂直滚动条,它运行良好,但现在我正在尝试添加水平滚动条,但它运行正常,但它的位置完全混乱,我试过pack几何管理器,它只是没有给我想要的输出,我想要画布内窗口底部的水平滚动条。

这是我遇到麻烦的代码部分。。。

self.frame_2 = Frame(self, bg='skyblue',)
self.frame_2.place(x=0, y=150)
self.canvas = Canvas(self.frame_2, bg='orange', height=200, width=300,)
self.canvas.pack(side='left',expand=True,fill=BOTH)
self.win_in_can = Frame(self.canvas, bg='orange')
self.myscrollbar = Scrollbar(self.frame_2,orient=VERTICAL,command=self.canvas.yview)
self.myscrollbar_h = Scrollbar(self.frame_2, orient=HORIZONTAL, command=self.canvas.xview)
self.canvas.configure(xscrollcommand=self.myscrollbar_h.set, yscrollcommand=self.myscrollbar.set)
self.myscrollbar.pack(side='right', fill='y')
self.myscrollbar_h.pack(side='left',fill='x')
self.canvas.create_window((0, 0), window=self.win_in_can, anchor='nw')
self.win_in_can.bind("<Configure>", lambda e: self.canvas.configure(scrollregion=self.canvas.bbox("all")))

仅在包装滚动条(水平和垂直(后包装画布

def __init__(self):
super().__init__()
self.frame_2 = Frame(self, bg='skyblue',)
self.frame_2.place(x=0, y=150)
self.canvas = Canvas(self.frame_2, bg='orange', height=200, width=300,)

self.win_in_can = Frame(self.canvas, bg='orange')
self.myscrollbar = Scrollbar(self.frame_2,orient=VERTICAL,command=self.canvas.yview)
self.myscrollbar_h = Scrollbar(self.frame_2, orient=HORIZONTAL, command=self.canvas.xview)
self.canvas.configure(xscrollcommand=self.myscrollbar_h.set, yscrollcommand=self.myscrollbar.set)
self.canvas.create_window((0, 0), window=self.win_in_can, anchor='nw')
self.win_in_can.bind("<Configure>", lambda e: self.canvas.configure(scrollregion=self.canvas.bbox("all")))
self.myscrollbar.pack(side=RIGHT, fill='y')
self.myscrollbar_h.pack(side=BOTTOM,fill='x')
self.canvas.pack(side='left',expand=True,fill=BOTH)
for i in range(100):
Button(self.win_in_can,text=str(i)).pack()

您明确告诉pack将滚动条放在左侧。如果希望它位于画布下方,请使用side='bottom'。你还需要把它放在画布之前。

我发现,当你把布局代码分组在一个博客中,分组排列时,布局更容易管理。

self.myscrollbar.pack(side='right', fill='y')
self.myscrollbar_h.pack(side='bottom',fill='x')
self.canvas.pack(side='left',expand=True,fill=BOTH)

相关内容

最新更新