gpt4 book ai didi

python - tkinter 滚动条折叠它所在的 Canvas

转载 作者:太空宇宙 更新时间:2023-11-04 04:22:33 26 4
gpt4 key购买 nike

我正在尝试制作一个包含两个部分的程序。左侧部分将显示一个垂直滚动的列表,而右侧部分将显示基于列表中所选项目的信息。忽略正确的部分,因为我还没有到达那里。

除了左侧部分将垂直滚动外,下面是它的大致外观。

enter image description here

不幸的是,当我打包滚动条时,左侧部分完全消失了。

enter image description here

下面是代码。

import tkinter as tk


class Tasks(tk.Tk):
def __init__(self, builds=None):
super().__init__()

if builds is None:
self.builds = []
else:
self.builds = builds

self.title('Title')
self.geometry('1000x600')
self.configure(bg='red')

self.tasks_canvas = tk.Canvas(self, width=200, bg='green')
self.tasks_frame = tk.Frame(self.tasks_canvas)
self.scrollbar = tk.Scrollbar(self.tasks_canvas, orient='vertical',command=self.tasks_canvas.yview)

self.canvas_frame = self.tasks_canvas.create_window((0, 0), window=self.tasks_frame, anchor='n')

self.tasks_canvas.configure(yscrollcommand=self.scrollbar.set)

self.tasks_canvas.pack(side=tk.LEFT, fill=tk.Y)
self.scrollbar.pack(side=tk.LEFT, fill=tk.Y, expand=1)


if __name__ == '__main__':
root = Tasks()
root.mainloop()

我确定我错过了一个简单的概念,但我就是想不通。

最佳答案

发生这种情况的原因是 pack 几何管理器的工作方式。看看这个answer .在这里引用它:

By default pack will attempt to shrink (or grow) a container to exactly fit its children. Because the scrollbar is a children of the canvas in the, the canvas shrinks to fit.

要解决这个问题,您可以使用额外的 Frame 来包含 CanvasScrollbar 并将 Scrollbar 的父级设置为这个框架。

import tkinter as tk

class Tasks(tk.Tk):
def __init__(self, builds=None):
super().__init__()

self.title('Title')
self.geometry('400x120')
self.configure(bg='red')

<b>self.t_frame = tk.Frame(self)</b>
<b>self.t_frame.pack(side=tk.LEFT)</b>
self.tasks_canvas = tk.Canvas(<b>self.t_frame</b>, width=100, bg='green')
self.scrollbar = tk.Scrollbar(<b>self.t_frame</b>, orient='vertical',command=self.tasks_canvas.yview)

self.tasks_canvas.configure(yscrollcommand=self.scrollbar.set)

self.tasks_canvas.pack(side=tk.LEFT, fill=tk.Y)
self.scrollbar.pack(side=tk.LEFT, fill=tk.Y)

if __name__ == '__main__':
root = Tasks()
root.mainloop()

Result

关于python - tkinter 滚动条折叠它所在的 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54190162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com