【发布时间】:2021-10-31 13:07:30
【问题描述】:
我创建了我的应用程序的一部分,用户可以在其中滚动浏览多个小部件。我的问题是我无法弄清楚如何设置可滚动区域(tk.Frame)以将其宽度调整为父框架。这是因为框架放置在画布窗口中,因此从不调用 grid() 或 pack(),因此我不能使用sticky=tk.EW。我应该注意,设置画布 anchor=tk.CENTER 也不起作用。
这是我的代码。 self.workspace_frame 引用父框架:
# Initialize scrollbar
scrollbar = tk.Scrollbar(self.workspace_frame)
scrollbar.configure(
orient=tk.VERTICAL,
command=canvas.yview
)
# Initialize contents frame
contents = tk.Frame(canvas)
contents.configure(
#background=self.receded_color
background='red'
)
# Prevent resizing problems
contents.bind(
'<Configure>',
lambda event: canvas.configure(
scrollregion=canvas.bbox(tk.ALL)
)
)
# Configure canvas
canvas.create_window((0, 0), window=contents)
canvas.configure(
yscrollcommand=scrollbar.set,
background=self.receded_color,
highlightthickness=0
)
# Add elements to grid
canvas.grid(column=0, row=0, sticky=tk.NS)
scrollbar.grid(column=1, row=0, sticky=tk.NS)
这是我的滚动条和滚动区域的样子。红色表示我正在努力居中的框架:My App
谢谢。
【问题讨论】:
标签: python user-interface tkinter