簡體   English   中英

為什么滾動條在 canvas (tkinter) 中不起作用?

[英]Why is the scrollbar not working in the canvas (tkinter)?

我想要 window 框架來擴展整個 canvas 並有一個滾動條。 現在滾動條在視覺上就在那里,但不能用作滾動條。

root = Tk()

def onCanvasConfigure(e):
    my_canvas.configure(scrollregion = my_canvas.bbox("all")) #make the scrollfunction work
    my_canvas.itemconfig('window', height=(my_canvas.winfo_height()-100), width=(my_canvas.winfo_width()-100)) #set the frame window to canvas size


#Below code to add scrollbar to app. 
# Layers (root -> main_frame -> my_canvas -> window (frame))

# Create A Main Frame
main_frame = Frame(root)
main_frame.pack(fill=BOTH, expand=1)

# Create A Canvas
my_canvas = Canvas(main_frame)
my_canvas.pack(side=LEFT, fill=BOTH, expand=1)

# Add A Scrollbar To The Canvas
my_scrollbar = ttk.Scrollbar(main_frame, orient=VERTICAL, command=my_canvas.yview)
my_scrollbar.pack(side=RIGHT, fill=Y)

# Configure The Canvas
my_canvas.configure(yscrollcommand=my_scrollbar.set)


# Create ANOTHER Frame INSIDE the Canvas
window = Frame(my_canvas)

# Add that New frame To a Window In The Canvas
my_canvas.create_window((0,0), window=window, anchor="nw", tags="window")

my_canvas.bind("<Configure>", onCanvasConfigure)

見剪輯: https://jumpshare.com/v/TJlbWJac5d4rwp3DwnFw

由於您將內部框架window的大小調整為與 canvas 相同的大小,因此滾動區域將與scrollregion的大小大致相同,這使得滾動條未激活。

如果您設置的框架高度大於 canvas 的高度,將激活滾動條:

def onCanvasConfigure(e):
    # resize the frame with double height of canvas
    my_canvas.itemconfig('window', height=e.height*2, width=e.width)
    # update scrollregion
    my_canvas.configure(scrollregion=my_canvas.bbox("all"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM