python - 特金特。滚动条在画布上不起作用
问题描述
我是编程新手,请不要恨我:)
为什么滚动在我的画布小部件上不起作用?我添加了 30 行的循环,我无法向下滚动。由于 create_text() 方法,它看起来像它,也可能不是。例如,我在下面编写了代码。
from tkinter import *
root = Tk()
root.geometry('200x150')
frame = Frame(root)
yscrollbar = Scrollbar(frame, orient=VERTICAL)
yscrollbar.pack(fill=Y, side=RIGHT)
canvas = Canvas(frame,
yscrollcommand=yscrollbar.set,
bg='white')
canvas.pack(fill=BOTH)
yscrollbar.config(command=canvas.yview)
n=12
for i in range(1,31):
canvas.create_text(10,n,text=i)
n+=12
frame.pack()
root.mainloop()
解决方案
滚动没有响应,因为您需要告诉画布将滚动限制在给定区域。
您可以使用该bbox
方法获取给定对象或一组对象的边界框。
canvas.bbox(ALL)
返回画布上所有对象的边界框。
链接:http ://effbot.org/zone/tkinter-scrollbar-patterns.htm您可以在此链接中检查其他方法来执行此操作
这是工作代码:
from tkinter import *
root = Tk()
root.geometry('200x150')
frame = Frame(root)
yscrollbar = Scrollbar(frame, orient=VERTICAL)
yscrollbar.pack(fill=Y, side=RIGHT)
canvas = Canvas(frame,
yscrollcommand=yscrollbar.set,
bg='white')
canvas.pack(fill=BOTH)
yscrollbar.config(command=canvas.yview)
n=12
for i in range(1,31):
canvas.create_text(10,n,text=i)
n+=12
frame.pack()
# Add this line to tell the canvas the area over to scroll
canvas.config(scrollregion=canvas.bbox(ALL))
root.mainloop()
推荐阅读
- python - 生成随机数的函数用种子调用其他生成随机数的函数,种子似乎又被使用了
- flutter - 将宽度设置为行的特定子项
- javascript - 停止 JS 从定义的变量中选择两次相同的图像
- python - 使用Python对图像中阈值以上像素值求和的最快方法
- java - 构建 Spark 项目方法
- excel - Excel 函数错误,您为此函数输入了太多参数
- python - 带有变量和通配符的 Ansible 条件
- javascript - 在 PHP 预先生成 UI 时,通过单击按钮替换 UI
- java - 带有 JPA 实体的 Spring Boot Cacheable 注释
- python - 如何在 python 中使用日志功能?