利用Tkinter 為框架添加捲軸功能
在Tkinter 中,創建可滾動框架需要合併滾動條,從而可以自動滾動超出滾動條框架高度的內容。基於富有洞察力的討論,有人建議建立一個框架,在其中包含一個畫布,並將滾動條附加到框架上將實現所需的功能。然後在畫布內構思一個視窗物件來容納額外的框架。
使用以下Python 程式碼,可以有效地實現垂直可捲動的框架:
import tkinter as tk import tkinter.ttk as ttk class VerticalScrolledFrame(ttk.Frame): def __init__(self, parent, *args, **kw): ttk.Frame.__init__(self, parent, *args, **kw) vscrollbar = ttk.Scrollbar(self, orient=VERTICAL) vscrollbar.pack(fill=Y, side=RIGHT, expand=FALSE) canvas = tk.Canvas(self, bd=0, highlightthickness=0, yscrollcommand=vscrollbar.set) canvas.pack(side=LEFT, fill=BOTH, expand=TRUE) vscrollbar.config(command=canvas.yview) canvas.xview_moveto(0) canvas.yview_moveto(0) self.interior = interior = ttk.Frame(canvas) interior_id = canvas.create_window(0, 0, window=interior, anchor=NW) def _configure_interior(event): size = (interior.winfo_reqwidth(), interior.winfo_reqheight()) canvas.config(scrollregion="0 0 %s %s" % size) if interior.winfo_reqwidth() != canvas.winfo_width(): canvas.config(width=interior.winfo_reqwidth()) interior.bind('<Configure>', _configure_interior) def _configure_canvas(event): if interior.winfo_reqwidth() != canvas.winfo_width(): canvas.itemconfigure(interior_id, width=canvas.winfo_width()) canvas.bind('<Configure>', _configure_canvas) root = tk.Tk() frame = VerticalScrolledFrame(root) frame.pack() for i in range(10): ttk.Button(frame.interior, text="Button " + str(i)).pack() root.mainloop()
解決查詢:
以上是如何使用畫布和捲軸在 Tkinter 中建立可捲動框架?的詳細內容。更多資訊請關注PHP中文網其他相關文章!