gpt4 book ai didi

python - 在 Python 中显示透明且没有背景或窗口的图像

转载 作者:行者123 更新时间:2023-12-05 03:27:44 24 4
gpt4 key购买 nike

我正在尝试在屏幕上显示图像,但没有弹出/包含任何窗口/应用程序。我与 TKinter 非常接近,但是删除 Canvas 背景颜色的方法很老套,并且会产生一些不良影响。

import tkinter as tk
import ctypes
user32 = ctypes.windll.user32
screen_size = user32.GetSystemMetrics(0), user32.GetSystemMetrics(1)

root = tk.Tk()

root.overrideredirect(True)
root.config(bg="blue", bd=0, highlightthickness=0)
root.attributes("-transparentcolor", "#FEFCFD")
root.attributes("-topmost", True)

tk_img = tk.PhotoImage(file="image.png")

canvas = tk.Canvas(root, bg="#FEFCFD", bd=0, highlightthickness=0, width=screen_size[0], height=screen_size[1])
canvas.pack()

img = canvas.create_image(0, 0, image=tk_img, anchor="nw")

root.mainloop()

-transparentcolor 标志主要移除背景,但如果图像有任何部分透明的像素,它会为它们着色。另外,如果该颜色存在于图像中,它将被删除;这种颜色的选择是希望尽量减少图像中的精确匹配,同时也主要是白色,希望对图像的影响最小。 Here's an image of what it looks like currently ;非常接近我想要的,但是您可以在骰子的白色区域看到一些缺失的像素,并且由于边缘部分透明,它们周围似乎都有白色边框。 This is what the image should look like.

我也曾尝试使用 wxPython 实现这种效果,但我无法删除窗口的背景,导致透明图像总是被某种颜色所衬托。我用了this answer;我稍微修改了它,但我所做的一切都没有改进它。

那么,有没有办法用 Python 在屏幕上绘制一个完全没有任何背景的图像?

最佳答案

感谢 Kartikeya 的建议,我得以解决自己的问题。

使用 PyQt5,此代码将显示透明且完全没有边框或背景的图像

import sys

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QMainWindow, QApplication, QLabel

app = QApplication(sys.argv)

window = QMainWindow()

window.setAttribute(Qt.WA_TranslucentBackground, True)
window.setAttribute(Qt.WA_NoSystemBackground, True)
window.setWindowFlags(Qt.FramelessWindowHint)

label = QLabel(window)
pixmap = QPixmap('image.png')
label.setPixmap(pixmap)
label.setGeometry(0, 0, pixmap.width(), pixmap.height())

window.label = label

window.resize(pixmap.width(),pixmap.height())

window.show()
sys.exit(app.exec_())

在寻找 PyQt5 时,我找到了 this question并且只需要稍微修改代码。 Here is what it looks like now.

关于python - 在 Python 中显示透明且没有背景或窗口的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71416368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com