Python 水平滚动条未放置在我想要的位置

Python 水平滚动条未放置在我想要的位置,python,tkinter,Python,Tkinter,我正在尝试创建一个简单的python GUI应用程序。我正确添加了垂直滚动条,它运行良好,但现在我尝试添加水平滚动条,它运行正常,但其位置混乱, 我已经尝试过包装几何管理器,它只是没有给我想要的输出,我想在画布内的窗口底部的水平滚动条 这是我遇到麻烦的代码部分 self.frame_2 = Frame(self, bg='skyblue',) self.frame_2.place(x=0, y=150) self.canvas = Canvas(

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

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

        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")))
self.frame_2=frame(self,bg='skyblue',)
自框架2位置(x=0,y=150)
self.canvas=canvas(self.frame_2,bg='橙色',高度=200,宽度=300,)
self.canvas.pack(side='left',expand=True,fill=BOTH)
self.win\u in\u can=Frame(self.canvas,bg='orange')
self.myscrollbar=Scrollbar(self.frame_2,orient=VERTICAL,command=self.canvas.yview)
self.myscrollbar\u h=滚动条(self.frame\u 2,orient=水平,command=self.canvas.xview)
configure(xscrollcommand=self.myscrollbar_h.set,yscrollcommand=self.myscrollbar.set)
self.myscrollbar.pack(side='right',fill='y')
self.myscrollbar\u h.pack(side='left',fill='x')
self.canvas.create_window((0,0),window=self.win_在_can中,anchor='nw')
can.bind(“,lambda e:self.canvas.configure(scrollregion=self.canvas.bbox(“全部”))中的self.win\u

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

def\uuuu初始化(自):
super()。\uuuu init\uuuuu()
self.frame_2=帧(self,bg='skyblue',)
自框架2位置(x=0,y=150)
self.canvas=canvas(self.frame_2,bg='橙色',高度=200,宽度=300,)
self.win\u in\u can=Frame(self.canvas,bg='orange')
self.myscrollbar=Scrollbar(self.frame_2,orient=VERTICAL,command=self.canvas.yview)
self.myscrollbar\u h=滚动条(self.frame\u 2,orient=水平,command=self.canvas.xview)
configure(xscrollcommand=self.myscrollbar_h.set,yscrollcommand=self.myscrollbar.set)
self.canvas.create_window((0,0),window=self.win_在_can中,anchor='nw')
can.bind(“,lambda e:self.canvas.configure(scrollregion=self.canvas.bbox(“全部”))中的self.win\u
self.myscrollbar.pack(side=RIGHT,fill='y')
self.myscrollbar_h.pack(侧面=底部,填充=x')
self.canvas.pack(side='left',expand=True,fill=BOTH)
对于范围(100)内的i:
按钮(self.win_in_can,text=str(i)).pack()

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

def\uuuu初始化(自):
super()。\uuuu init\uuuuu()
self.frame_2=帧(self,bg='skyblue',)
自框架2位置(x=0,y=150)
self.canvas=canvas(self.frame_2,bg='橙色',高度=200,宽度=300,)
self.win\u in\u can=Frame(self.canvas,bg='orange')
self.myscrollbar=Scrollbar(self.frame_2,orient=VERTICAL,command=self.canvas.yview)
self.myscrollbar\u h=滚动条(self.frame\u 2,orient=水平,command=self.canvas.xview)
configure(xscrollcommand=self.myscrollbar_h.set,yscrollcommand=self.myscrollbar.set)
self.canvas.create_window((0,0),window=self.win_在_can中,anchor='nw')
can.bind(“,lambda e:self.canvas.configure(scrollregion=self.canvas.bbox(“全部”))中的self.win\u
self.myscrollbar.pack(side=RIGHT,fill='y')
self.myscrollbar_h.pack(侧面=底部,填充=x')
self.canvas.pack(side='left',expand=True,fill=BOTH)
对于范围(100)内的i:
按钮(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)

您明确告诉
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)

试一下self.myscrollbar\u h.pack(side='bottom',fill='x')?我也试过了'bottom',它不工作。
grid()
?试一下self.myscrollbar\u h.pack(side='bottom',fill='x')?我也试过'bottom了,它不工作。
grid()