问题产生,使用列表循环创建Button,当Button过多超出Frame。起初我用Scrollbar同样放在Frame,但是之后无法关联到Button。求解决超出Frame的控件如何显示的问题
1条回答 默认 最新
- CQ.abc 2023-04-10 22:11关注
以下回答结合了ChatGPT:
如果您在Frame中创建的控件太多,导致超出Frame范围,可以使用Scrollbar来实现滚动条功能,使得用户可以滚动查看控件。下面是一个简单的例子,可以参考:from tkinter import * # 创建窗口 root = Tk() root.geometry('200x200') # 创建Frame frame = Frame(root, width=200, height=150) frame.pack(fill=BOTH, expand=1) # 创建Scrollbar scrollbar = Scrollbar(frame) scrollbar.pack(side=RIGHT, fill=Y) # 创建一个Canvas canvas = Canvas(frame, yscrollcommand=scrollbar.set) canvas.pack(side=LEFT, fill=BOTH, expand=1) # 配置Scrollbar与Canvas的联动 scrollbar.config(command=canvas.yview) # 创建一个Frame,作为Canvas的子控件 inner_frame = Frame(canvas) canvas.create_window(0, 0, anchor=NW, window=inner_frame) # 创建Button for i in range(50): btn = Button(inner_frame, text='Button %d' % i) btn.pack() # 配置Canvas的滚动范围 inner_frame.update_idletasks() canvas.config(scrollregion=canvas.bbox('all')) # 进入消息循环 root.mainloop()
在这个例子中,我们使用Canvas来创建一个可滚动的Frame,首先在Frame中创建一个Canvas和一个Scrollbar,然后把Canvas作为子控件放入Frame中。接着我们再创建一个Frame,作为Canvas的子控件,然后在这个Frame中创建需要显示的控件,这里使用了50个Button。最后我们需要配置Canvas的滚动范围,让它能够正常滚动。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 vs2022无法联网
- ¥15 TCP的客户端和服务器的互联
- ¥15 VB.NET操作免驱摄像头
- ¥15 笔记本上移动热点开关状态查询
- ¥85 类鸟群Boids——仿真鸟群避障的相关问题
- ¥15 CFEDEM自带算例错误,如何解决?
- ¥15 有没有会使用flac3d软件的家人
- ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
- ¥15 docker实践项目
- ¥15 利用pthon计算薄膜结构的光导纳