python - 水平滚动条未放置在我想要的位置
问题描述
我正在尝试创建一个简单的 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")))
解决方案
仅在打包滚动条(水平和垂直)后才打包画布
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()
推荐阅读
- javascript - 我正在尝试将 url 链接添加到自动完成数据
- python - 改进fuzzywuzzy - 匹配2个列表中的名称
- javascript - 导入 ES6 模块需要 .js 扩展名?
- vue.js - 如何在本地服务器上部署 Vue CLI 应用程序?
- visual-studio - 如何在 Resharper 的 IntelliSense 中显示所有 Visual Studio 的代码片段?
- python - 散景没有图形呈现
- java - 模拟 RestTemplate getForObject
- r - dplyr:mutate_at + coalesce:列的动态名称
- javascript - 如何将值传递给 v-model?
- javascript - 在对象数组的数组中查找交点