如何使 tkinter 画布矩形透明?

2024-01-03

我需要使我的 tkinter 矩形透明。有谁知道这是怎么做到的吗?

我试图指定alpha=".5", opacity=".5",并且我尝试在颜色代码的末尾添加两位数字:fill="#ff000066"。这些东西似乎都不起作用,我找不到正确的语法。

import tkinter

root = tkinter.Tk()
canvas = tkinter.Canvas(root, width=800, height=600)
canvas.pack()

canvas.create_rectangle(50, 50, 100, 100, fill="#ff0000", alpha=0.5)

root.mainloop()

这段代码给了我这样的消息:_tkinter.TclError: unknown option "-alpha",所以这显然不是正确的方法。


您可以使用透明图像来模拟结果。使用Pillow创建透明图像,然后使用canvas.create_image(...)来画它。下面是示例代码:

from tkinter import *
from PIL import Image, ImageTk

root = Tk()

images = []  # to hold the newly created image

def create_rectangle(x1, y1, x2, y2, **kwargs):
    if 'alpha' in kwargs:
        alpha = int(kwargs.pop('alpha') * 255)
        fill = kwargs.pop('fill')
        fill = root.winfo_rgb(fill) + (alpha,)
        image = Image.new('RGBA', (x2-x1, y2-y1), fill)
        images.append(ImageTk.PhotoImage(image))
        canvas.create_image(x1, y1, image=images[-1], anchor='nw')
    canvas.create_rectangle(x1, y1, x2, y2, **kwargs)

canvas = Canvas(width=300, height=200)
canvas.pack()

create_rectangle(10, 10, 200, 100, fill='blue')
create_rectangle(50, 50, 250, 150, fill='green', alpha=.5)
create_rectangle(80, 80, 150, 120, fill='#800000', alpha=.8)

root.mainloop()

和输出:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 tkinter 画布矩形透明? 的相关文章

随机推荐

  • 在 React.js 应用程序中从广告合作伙伴加载外部脚本

    我想在我的 React js Web 应用程序中包含两种类型的广告 div div 还有这个广告
  • SQL Server:返回字符串过程 INITCAP

    这就是我所做的 create proc INITCAP string varchar 30 as begin SET string UPPER LEFT string 1 LOWER RIGHT string LEN string 1 en
  • 使用 bootstrap 进行分位数回归的置信区间

    我正在尝试获取线性和分位数回归的五种引导区间 我能够使用 Boot from 引导并找到线性回归的 5 个引导区间 分位数 正常 基本 学生化和 BCa car和 boot ci 来自boot 当我尝试使用 rq 对分位数回归执行相同操作时
  • 使用 Entity Framework 4 时如何返回数据读取器?

    我想使用 LINQ 和 EntityFramework 上下文定义数据库查询 但我不希望返回实体 我想要一个数据读取器 我怎样才能做到这一点 这是为了将行导出到 CSV 干杯 伊恩 如果你需要这个 你很可能正在做一些意想不到的事情 通过查询
  • 理解声明 C 字符串的两种方法[重复]

    这个问题在这里已经有答案了 几周前 我开始学习编程语言 C 我了解 HMTL CSS Javscript PHP 和基本服务器管理等 Web 技术 但 C 语言让我感到困惑 据我了解 C 语言没有字符串数据类型 只有字符数据类型 但我可能是
  • 基本 iPhone 定时器示例

    好吧 我在网上搜索过 甚至在几本书中寻找答案 因为我无法理解 NSTimer 的苹果文档 我正在尝试在同一视图上实现 2 个计时器 每个计时器都有 3 个按钮 开始 停止 重置 第一个计时器从 2 分钟开始倒计时 然后发出蜂鸣声 第二个计时
  • AWS Elastic Beanstalk - 更改 webapp 文件夹的所有者

    我已使用 AWS Elastic Beanstalk 成功创建了一个应用程序 并使用 Git 上传了该应用程序 我剩下要做的就是创建我的settings php 文件 一切都应该可以正常工作 但是 当我使用 ec2 user 用户身份通过
  • Graphviz Dot 中奇怪的边缘位置

    我有一个模块 可以自动输出 以点格式 用某种汇编语言 我的编译器的 IR 编写的函数 节点是使用 记录 形状打印的基本块 问题在于边缘采用了奇怪的路线 例如 digraph node shape record n0 label
  • Apple 智能横幅上的应用程序参数是否会在安装时传递给应用程序?

    我已经为我的应用程序实现了 Apple 智能横幅 其中包含一个应用程序参数 其中包含我希望该应用程序在我的网站上打开的 URL 我以为用户安装应用程序时就会通过 但似乎没有 步骤 用户访问页面 未安装应用程序 单击 查看 转到应用程序商店
  • 如何删除查询中的第一个单词

    如何删除 MySQL 查询中字段的第一个单词 我尝试使用 SUBSTRING INDEX 但没有结果 该字段为varchar 可以同时包含字母和数字 例子 PWS 20110804 Pos 04应该成为20110804 Pos 04 PWS
  • 如何为特定控件创建自己的自定义提示?

    我需要为特定控件 而不是整个应用程序 创建一个自定义提示窗口 具有自己的颜色和布局 提示文本本身不会连接到该特定的Hint财产控制 按照建议 我编写了一个处理程序CM HINTSHOW 如果控件有此功能 则此方法有效ShowHint Tru
  • 找出与 Elastic Beanstalk 应用程序关联的 EC2 实例?

    有没有办法从仪表板找出与我的 Elastic Beanstalk 应用程序关联的 EC2 实例 我检查了 配置 下的每个页面 但找不到有关运行该应用程序的 EC2 实例的任何信息 您无法通过 Elastic Beanstalk 仪表板查看关
  • C++ 一个带有结构数组的类,不知道我需要多大的数组

    我有一个带有字段的类like名字 年龄 学校等 我需要能够存储其他信息 例如他们旅行过的地方以及旅行的年份 我无法专门声明另一个类来保存 TravelDestination 和年份 所以我认为有一个结构体可能是最好的 这只是一个例子 str
  • Java Scanner - 将换行符读取到字符串中?

    我有一个扫描仪 它接受用户输入 直到按 ctrl d 然后是一个 while 循环 将每个单词添加到字符串中 然后打印它 但我想知道如何在字符串中包含像 n 这样的新行指示符凡是有新行的地方 Scanner sc new Scanner S
  • Node.js async.forEach:无法读取未定义的属性“值”

    我有一种感觉 我犯了一个明显的错误 但找不到它 我得到的错误是 node modules async lib async js 194 iterator x value function err v TypeError Cannot rea
  • 如何在 Rust 中强制恢复被阻止读取文件的线程?

    因为 Rust 没有以非阻塞方式读取文件的内置功能 所以我必须生成一个读取文件的线程 dev input fs0为了获得操纵杆事件 假设操纵杆未使用 没有任何内容可读取 因此读取线程在读取文件时被阻塞 有没有办法让主线程强制恢复读取线程的阻
  • 监听 Flutter 中设备方向的变化

    我正在寻找一种监听手机方向变化的方法 目的是在手机横向时隐藏某些内容 我的布局目前仅按预期以纵向显示 但我希望我的应用程序在设备旋转到横向时执行某些操作 同时保持纵向布局 我尝试过使用OrientationBuilder 但这仅在布局更改为
  • Java 应用程序服务器性能

    我有一个在 Sun Application Server 8 1 又名 SJSAS Glassfish 的前身 上运行的有点过时的 Java EE 应用程序 当有 500 多个并发用户时 应用程序变得慢得令人无法接受 我正在尝试帮助确定大部
  • 如何提取 Instagram 数据

    我正在尝试构建 Instagram 帐户的 Microsoft Access 数据库 并希望提取以下数据等 帐户名称 关注者数量 关注人数 帖子数量 及其日期 图片点赞数 图片评论数 我在构建数据库方面没有任何问题 但想知道是否有一种更简单
  • 如何使 tkinter 画布矩形透明?

    我需要使我的 tkinter 矩形透明 有谁知道这是怎么做到的吗 我试图指定alpha 5 opacity 5 并且我尝试在颜色代码的末尾添加两位数字 fill ff000066 这些东西似乎都不起作用 我找不到正确的语法 import t