tkinter——Canvas部件

也在学习中,这些都是在莫烦python做志愿者写下的。~

Canvas部件


canvas = tk.Canvas(window, bg='blue', height=100, width=200)
canvas.pack()

这里的参数和以往学过的部件一样,所以就不再一一解释。


image_file = tk.PhotoImage(file='1.gif')
image = canvas.create_image(10, 10, anchor='nw', image=image_file)

`image_file = tk.PhotoImage(file='1.gif')`这一句是创造一个变量存放`1.gif`这张图片。
`image = canvas.create_image(10, 10, anchor='nw', image=image_file)`里面的参数`10,10`就是图片放入画布的坐标,
而这里的`anchor=nw`则是把图片的左上角作为锚定点,在加上刚刚给的坐标位置,即可将图片位置确定。
最后一个参数的意思大家应该都知道,就是将刚刚存入的图片变量,赋值给`image`。


x0, y0, x1, y1= 50, 50, 80, 80
line = canvas.create_line(x0, y0, x1, y1)

这段代码主要实现的是华一条直线,后面`()`中给的参数就是线段两点的坐标,两点确定一条直线吗。此处给的就是从坐标(50,50)到(80,80)画一条直线。



oval = canvas.create_oval(x0, y0, x1, y1, fill='red')##创建一个圆,填充色为`red`红色
arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=180)##创建一个扇形
rect = canvas.create_rectangle(100, 30, 100+20, 30+20)##创建一个矩形

这里面就是创建扇形时多了两个没见过的参数`start=0`和`extent=180`,其实就是从0度到180度,就好像扇子的边打开一样。在我们看来就是个半圆,
如果改为`extent=90`,我们看到的就是一个1/4圆


触发功能

def moveit():
    canvas.move(rect, 0, 2)

这里的触发不再是以往的print_selection了,哈哈,那么这里的是怎么样的功能呢,首先我们从单词理解来看就是移动的函数,
就是我们每点一次`button` 矩形就会移动这里`canvas.move(rect, 0, 2)`的参数`(rect,0,2)`就是移动`rect`这个变量,即我们看到的矩形
后面的0和2,也就是横坐标移动0个单位,纵坐标移动2个单位,简单的说就是每次点击,横向不动,纵向移动两个单位。
Tkinter中的Canvas控件是用于绘图的控件,类似于HTML5中的Canvas。它可以用来绘制直线、圆形、弧形、矩形、字符串、图片等。创建Canvas控件的方式是调用tkinter.Canvas函数,并指定其属性,如背景色、宽度、高度、状态等。常用的属性有background(bg)、width、height、state、relief、borderwidth(bd)等。\[2\] 例如,下面的代码演示了创建一个包含空白Canvas控件的窗口,并设置了Canvas的背景色、宽度和高度: ```python import tkinter as tk window = tk.Tk() window.title('Canvas测试') window.geometry('400x300') tk.Label(window, text='Canvas示例').grid(row=0, column=0) cv = tk.Canvas(window, bg="lightblue", width=200, height=200) cv.grid(row=1, column=1) window.mainloop() ``` 在Canvas控件上绘制图形可以使用create_oval、create_line、create_rectangle等方法。例如,下面的代码演示了在Canvas上绘制一个小圆点,并通过绑定鼠标左键事件实现随鼠标移动绘制圆点的功能: ```python from tkinter import * root = Tk() w = Canvas(root, width=500, height=400) w.pack() def paint(event): x1, y1 = (event.x - 1), (event.y - 1) x2, y2 = (event.x + 1), (event.y + 1) w.create_oval(x1, y1, x2, y2, fill='red') # 绑定鼠标左键事件 w.bind('<B1-Motion>', paint) # 创建一个按钮清除画板 Button(root, text='CLEAR', command=lambda x=ALL:w.delete(x)).pack(side=BOTTOM) Label(root, text='Please hold the mouse button and move!').pack(side=BOTTOM) mainloop() ``` 以上是关于TkinterCanvas控件的简单介绍和示例代码。希望对你有帮助! #### 引用[.reference_title] - *1* *2* [PythonTkinter模块的Canvas控件使用学习(1:基本用法)](https://blog.csdn.net/gc_2299/article/details/126532878)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [tkinter-Canvas详解](https://blog.csdn.net/peanutfish/article/details/123226871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值