Tkinter canvas-画布参数、删除组件、添加垂直滚动条
1、画布 Canvas的参数
from tkinter import * win = Tk() win.geometry('500x500+500+100') canvas = Canvas( master=win, # 父控件 bg='orange', # 背景颜色 bd=2, # 边框宽度 closeenough=1, # 当鼠标与画布上组件的距离小于该值时,认为鼠标在该组件上,是一个浮点型的值 cursor='circle', # 鼠标飘过的样式 height=300, # 画布的高 width=300, # 画布的宽 highlightbackground='blue', # 没有获得焦点时高亮边框的颜色 highlightcolor='red', # 获得焦点时高亮边框的颜色 highlightthickness=5, # 高亮边框的宽度 relief='groove', # 边框的样式 flat, groove, raised, ridge, solid, or sunken state='normal', # 状态 normal or disabled scrollregion=(0, 0, 400, 400), # 画布可以被滚动的范围 confine=True, # 画布是否允许滚动超出 scrollregion 选项指定的范围 selectbackground='yellow', # 画布对象被选中时的背景颜色 selectborderwidth=10, # 画布对象被选中时的边框宽度 takefocus=True, # 使用 Tab 键是否可以将焦点移动到输入框中 yscrollcommand=None, # 设置垂直滚动条,一般与滚动条相关联使用 yscrollincrement=1, # 设置垂直滚动条的步长 xscrollcommand=None, # 设置水平滚动条,一般与滚动条相关联使用 xscrollincrement=1, # 设置水平滚动条的步长 ) canvas.pack(pady=50) canvas.create_window((100, 100), window=Entry(canvas)) Button(win, text='按钮').pack() win.mainloop()
2、删除鼠标下的组件
from tkinter import * def event(w): # current 表示删除鼠标下的组件 canvas.delete('current') win = Tk() win.geometry('500x500+500+100') canvas = Canvas(win) canvas.pack(fill=BOTH, expand=True) # 画实线,填充橙色,设置宽度为10 for i in range(10, 200, 20): canvas.create_line(i, 100, i, 200, width=10, fill='orange') # 绑定鼠标左键点击事件 canvas.bind('<Button-1>', event) win.mainloop()
3、带垂直滚动条的画布
from tkinter import * def event2(): for i in range(0, 220): # 绘制实线,填充粉色,设置宽度为10 canvas.create_line(0, i, 100, i, fill='pink', width=10) for i in range(230, 300): # 绘制实线,填充蓝色,设置宽度为50 canvas.create_line(0, i, 100, i, fill='blue', width=50) def event1(event): """ 事件的属性 delta 解析 在MouseWheel 事件中,正值代表上卷,负值代表下卷; 在 Window 下,通常是 120 的倍数;在 MacOS 下,为 1 的倍数 """ number = int(-event.delta / 120) canvas.yview_scroll(number, 'units') win = Tk() win.geometry('500x500+500+100') frame = Frame(win) sv = Scrollbar(frame) # 定义垂直滚动条 sv.pack(side=RIGHT, fill=Y) # 放置垂直滚动条在最右侧,占满Y轴 canvas = Canvas(frame, bd=2, bg='orange', relief='groove') canvas.pack() canvas.config(yscrollcommand=sv.set) # 设置画布的Y轴滚动条函数与垂直滚动条绑定 canvas.config(scrollregion=(0, 0, 300, 800)) # 设置画布可以滚动的范围 sv.config(command=canvas.yview) # 设置垂直滚动条的函数与画布的Y轴滚动条事件绑定 frame.pack(pady=50) canvas.config(yscrollincrement=1) # 设置滚动条的步长 canvas.bind("<MouseWheel>", event1) # 添加滚轮事件 Button(text='为画布添加组件', command=event2).pack() event2() win.mainloop()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示