|
发表于 2024-5-2 15:42:33
|
显示全部楼层
非常抱歉,之前的回答有误。确实,在`Frame`上添加滚动条并不会自动滚动。但是我们可以通过在`Canvas`上添加滚动条来实现这个功能。这是一个修订后的代码示例:
- import tkinter as tk
- from tkinter import ttk
- def add_radio_button():
- button_value = len(radio_buttons) + 1
- radio_buttons.append(tk.Radiobutton(canvas, text=f"Radio {button_value}"))
- canvas.create_window((10, button_value * 30), window=radio_buttons[-1], anchor="w", width=200)
- update_scroll_region()
- def update_scroll_region():
- canvas.update_idletasks()
- canvas.config(scrollregion=canvas.bbox("all"))
- root = tk.Tk()
- root.geometry("400x400")
- scrollbar = tk.Scrollbar(root)
- scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
- canvas = tk.Canvas(root, yscrollcommand=scrollbar.set)
- canvas.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
- scrollbar.config(command=canvas.yview)
- frame = tk.Frame(canvas)
- canvas.create_window((0, 0), window=frame, anchor="nw")
- radio_buttons = []
- for i in range(10):
- radio_buttons.append(tk.Radiobutton(frame, text=f"Radio {i+1}"))
- radio_buttons[i].pack()
- add_button = ttk.Button(root, text="Add Radio Button", command=add_radio_button)
- add_button.pack()
- update_scroll_region()
- tk.mainloop()
复制代码
这个示例中,我们将`Frame`换成了`Canvas`,并在`Canvas`上添加了一个滚动条。当点击"Add Radio Button"按钮时,会在`Canvas`中添加一个新的`Radiobutton`。同时,我们添加了`update_scroll_region`函数来更新滚动区域的大小。
希望这次能对您有所帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|