简体   繁体   English

为什么我的 Tkinter 滚动条会填满我的 window 的整个长度?

[英]Why does my Tkinter Scrollbar's bar fill entire length of my window?

I have working horizontal scrollbar, but for some reason it does not rezise the "visible" bar.我有工作水平滚动条,但由于某种原因它没有重新调整“可见”栏。 It does scroll perfectly, but I even didin't notice there was a bar before I added style clam .它确实可以完美滚动,但我什至没有注意到在我添加 style clam之前有一个栏。

数字上升到“a99”

Here is my code:这是我的代码:

from tkinter import *
from tkinter import ttk

root = Tk()

style = ttk.Style()
style.theme_use('clam')

main_frame = Frame(root)
main_frame.pack(fill=BOTH, expand=1)

my_canvas = Canvas(main_frame)
my_canvas.pack(side=TOP, fill=BOTH, expand=1)

my_scrollbar = ttk.Scrollbar(main_frame, orient=HORIZONTAL, command=my_canvas.xview)
my_scrollbar.pack(side=BOTTOM, fill=X)

my_canvas.configure(yscrollcommand=my_scrollbar.set)
my_canvas.bind('<Configure>', lambda e: my_canvas.configure(scrollregion=my_canvas.bbox("all")))

seccond_frame = Frame(my_canvas)

my_canvas.create_window((0,0), window=seccond_frame, anchor="nw")

for i in range(100):
    Label(seccond_frame, text=f"a{i}").grid(row=0, column=i)

root.update()

root.mainloop()

There are two issues in your code:您的代码中有两个问题:

  1. my_canvas.configure(yscrollcommand=my_scrollbar.set) should be my_canvas.configure(xscrollcommand=my_scrollbar.set) my_canvas.configure(yscrollcommand=my_scrollbar.set)应该是my_canvas.configure(xscrollcommand=my_scrollbar.set)

  2. when adding items to seccond_frame , it is seccond_frame get resized, not my_canvas .将项目添加到seccond_frame时,调整大小的是seccond_frame ,而不是my_canvas So you need to bind <Configure> on seccond_frame instead of my_canvas所以你需要在seccond_frame而不是my_canvas上绑定<Configure>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM