gpt4 book ai didi

python - Tkinter,Canvas 在调整窗口大小时拒绝扩展或收缩

转载 作者:太空宇宙 更新时间:2023-11-04 01:13:09 24 4
gpt4 key购买 nike

我试图让我的 Canvas 根据窗口大小展开和收缩,必要时使用滚动条。我还没有添加水平滚动条,但它既不水平也不垂直缩放,而是顽固地保持任意大小。

我有 2 个框架的原因是因为内部框架水平滚动,因为我有几个必须一起滚动的 Canvas ,其中只有一个也垂直滚动。

root = Tk()
maxtick = 1000

frame = ttk.Frame(root) # , padding="3 3 12 12")
frame.grid(column=0, row=0, sticky=(N, W, E, S))
frame.columnconfigure(0, weight=1)
frame.rowconfigure(0, weight=1)

inner_frame = ttk.Frame(frame)
inner_frame.grid(column=0, row=0, sticky=(N, W, E, S))
inner_frame.columnconfigure(0, weight=1)
inner_frame.rowconfigure(0, weight=1)

# Primary canvas (inner_frame)
canvas = Canvas(inner_frame, bg='#FFF', width=maxtick,
scrollregion=(0, 0, maxtick, 16 * (128 + 1 + 1)) )
canvas.grid(column=0, row=0, sticky=(N, W, E, S))

for y in range(1, 128 + 1 + 1):
canvas.create_line(0, 16 * y - 1, maxtick, 16 * y - 1)

# Vertical scrollbar
vbar = ttk.Scrollbar(frame, orient=VERTICAL, command=canvas.yview)
vbar.grid(column=1, row=0, sticky=(N, W, E, S))
canvas.configure(yscrollcommand=vbar.set)

# canvas.create_line(10, 10, 200, 50)

root.mainloop()

最佳答案

您还需要配置最外层的网格布局。

...
root = Tk()
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
...

顺便说一句,如何将 packexpand=1, fill=BOTH 一起使用。

root = Tk()
frame = ttk.Frame(root)
frame.pack(expand=1, fill=BOTH)

maxtick = 1000

inner_frame = ttk.Frame(frame)
inner_frame.pack(expand=1, fill=BOTH, side=LEFT)

# Primary canvas (inner_frame)
canvas = Canvas(inner_frame, bg='#FFF', width=maxtick,
scrollregion=(0, 0, maxtick, 16 * (128 + 1 + 1)) )
canvas.pack(expand=1, fill=BOTH)

for y in range(1, 128 + 1 + 1):
canvas.create_line(0, 16 * y - 1, maxtick, 16 * y - 1)

# Vertical scrollbar
vbar = ttk.Scrollbar(frame, orient=VERTICAL, command=canvas.yview)
vbar.pack(fill=Y, side=LEFT)
canvas.configure(yscrollcommand=vbar.set)

root.mainloop()

关于python - Tkinter,Canvas 在调整窗口大小时拒绝扩展或收缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26435349/

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