问题产生,使用列表循环创建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 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
- ¥20 软件测试决策法疑问求解答
- ¥15 win11 23H2删除推荐的项目,支持注册表等
- ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
- ¥15 qt6.6.3 基于百度云的语音识别 不会改
- ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
- ¥15 神经网络怎么把隐含层变量融合到损失函数中?
- ¥15 lingo18勾选global solver求解使用的算法
- ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
- ¥20 测距传感器数据手册i2c