用 Python 为 Fortnite 制作十字线?

问题描述 投票:0回答:1

我目前正在使用 Steam 的一款名为 Crosshair V2 的免费软件。它所做的只是在屏幕中间显示一个静态透明十字准线。我不喜欢这个软件,因为它没有太多自定义选项。

我想编写一个Python脚本,在屏幕中央和顶层显示一个透明的十字准线。

这是我的脚本,但它不起作用:

import tkinter as tk
from PIL import Image, ImageTk

IMAGE_PATH = "crosshair.png"
SIZE = 30

root = tk.Tk()
root.overrideredirect(True)
root.wm_attributes("-topmost", True)
root.wm_attributes("-transparentcolor", "white")

image = Image.open(IMAGE_PATH).convert("RGBA")
image = image.resize((SIZE, SIZE), Image.LANCZOS)

datas = image.getdata()
new_data = []

for item in datas:
    if item[3] == 0:  # Check for fully transparent pixels
        new_data.append((255, 255, 255, 0))  # Keep them transparent
    else:
        new_data.append(item)  # Keep other pixels unchanged

image.putdata(new_data)
photo = ImageTk.PhotoImage(image)

canvas = tk.Canvas(root, width=SIZE, height=SIZE, bg="white", highlightthickness=-0)
canvas.pack()
canvas.create_image(0, 0, anchor="nw", image=photo)

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width - SIZE) // 2
y = (screen_height - SIZE) // 2
root.geometry(f"{SIZE}x{SIZE}+{x}+{y}")

root.mainloop()

此脚本的问题在于图像具有黑色背景而不是透明背景,并且十字准线内的白色像素突然变得透明。

有人可以帮我解决这个问题并给我写一个工作脚本吗?

我编写了一个不起作用的脚本

python scripting
1个回答
0
投票

您只需将根窗口和画布的背景设置为黑色,并将

-transparentcolor
属性设置为
black
。你根本不需要
PIL

这是更新后的代码:

import tkinter as tk

IMAGE_PATH = "crosshair.png"
SIZE = 30

root = tk.Tk()
root.overrideredirect(True)
root.wm_attributes("-topmost", True)
root.wm_attributes("-transparentcolor", "black")

photo = tk.PhotoImage(file = IMAGE_PATH)

canvas = tk.Canvas(root, width=SIZE, height=SIZE, bg="black", highlightthickness=0)
canvas.pack()
canvas.create_image(0, 0, anchor="nw", image=photo)

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x = (screen_width - SIZE) // 2
y = (screen_height - SIZE) // 2
root.geometry(f"{SIZE}x{SIZE}+{x}+{y}")

root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.