tkinter画图Canvas应用实例
原文地址 分类目录——tkinter 先看效果 其中蓝色区域为一块画布(Canvas)区域,在画布上放置了图片,画了圆形、方形、扇形;下方的按钮可以调用方法移动左边的矩形 Canvas应用实例 canvas = tk.Canvas(window, bg='blue', height=100, width=200) # 注意:tkinter中的坐标系左上角为原点,向右为x轴正向,向下为y轴正向 # 在canvas(画布)上放张图片 image_file = tk.PhotoImage(file='data/test1.gif') image = canvas.create_image(5, 5 `tkinter`是Python的标准GUI库,用于创建图形用户界面。在这个特定的示例中,我们关注的是`tkinter.Canvas`组件,它提供了一种在窗口内绘制图形的方法。`Canvas`是一个可交互的画布,允许你在其上创建各种图形元素,如线条、矩形、椭圆、图像等。 创建`Canvas`对象: ```python canvas = tk.Canvas(window, bg='blue', height=100, width=200) ``` 这里的`window`是包含`Canvas`的顶级窗口,背景颜色设置为蓝色,高度和宽度分别为100像素和200像素。 在`Canvas`上放置图片,我们需要`tk.PhotoImage`类来加载图像: ```python image_file = tk.PhotoImage(file='data/test1.gif') image = canvas.create_image(5, 5, anchor='nw', image=image_file) ``` `create_image`方法用于创建一个图像对象,坐标(5, 5)指定了图像左上角的位置,`anchor='nw'`表示图像的西北角与这个坐标对齐。 接着,我们学习如何在`Canvas`上绘制基本图形: - **线条**:使用`create_line`方法。 ```python x0, y0, x1, y1 = 50, 50, 80, 80 line = canvas.create_line(x0, y0, x1, y1) ``` - **椭圆**:使用`create_oval`方法。 ```python oval = canvas.create_oval(x0, y0, x1, y1, fill='red') ``` 这里,(x0, y0)和(x1, y1)定义了椭圆的边界框,`fill='red'`表示填充红色。 - **扇形**:使用`create_arc`方法。 ```python arc = canvas.create_arc(x0+30, y0+30, x1+30, y1+30, start=0, extent=180) ``` `start`和`extent`分别表示扇形的起始角度和覆盖的角度范围。 - **矩形**:使用`create_rectangle`方法。 ```python rect = canvas.create_rectangle(100, 10, 100+50, 10+20) ``` 矩形的坐标由两个对角点定义,(100, 10)和(150, 30)。 `Canvas`还支持图形的删除操作: ```python canvas.delete(rect) ``` 此外,我们可以获取图形的坐标: ```python print(canvas.coords(rect)) ``` 这将打印出矩形`rect`的坐标值。 为了使图形动态化,可以创建一个函数来移动图形: ```python def moveit(): canvas.move(rect, 0, 2) ``` `move`方法接受两个参数,分别代表X轴和Y轴上的位移量。 添加一个按钮,当点击时调用`moveit`函数: ```python tk.Button(window, text='move', command=moveit).pack() ``` `pack`方法用来布局组件,确保它们正确显示在窗口上。 这个例子展示了`tkinter.Canvas`的强大功能,不仅能够绘制静态图形,还能进行交互式操作,使得创建复杂的用户界面变得更加容易。通过组合这些基本图形,开发者可以构建出丰富的图形用户界面,满足各种需求。
- 粉丝: 1
- 资源: 929
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- TA-Lib-0.4.24-cp310-cp310-win-amd64.whl
- yolo算法-停车位数据集-7801张图像带标签-空的-已占用.zip
- 多表查询文件students.txt
- yolo算法-垃圾检测数据集-5659张图像带标签-金属-硬纸板-玻璃-塑料.zip
- yolo算法-安全帽-反光衣智慧工地数据集-7538张图像带标签-靴子-头盔-背心.zip
- yolo算法-垃圾桶数据集-6238张图像带标签-金属-纸张-硬纸板-塑料-玻璃.zip
- yolo算法-垃圾桶数据集-6392张图像带标签-纸板-铝-纸张-硬纸板-塑料-玻璃.zip
- yolo算法-卡车工作数据集-1062张图像带标签-底盘工作-堆垛机-人-底盘已卸载.zip
- 提供了丰富多样的 Spring、SpringMVC、MyBatis 和 Spring Boot 案例
- 各省环境规制强度数据(Excel/Shp格式)
评论11