Как создать 3 (красных) непрозрачных прямоугольника angular контуров в другом месте над прозрачным окном с помощью tkinter? - PullRequest
1 голос
/ 20 июня 2020

Я хотел разместить три отдельных красных прямоугольника над прозрачным окном.

Этот первый метод, который я использовал, основывался на изображении трех прямоугольных angular прямоугольников с прозрачным фоном (потому что я новичок в tkinter ), а затем поместите его поверх прозрачного окна.

from PIL import ImageTk, PngImagePlugin
from tkinter import *

import tkinter as tkr

app = tkr.Tk()
app.title("AI Cashier")
app.geometry("1366x768")
app.wm_attributes("-alpha", 0.1)


my_img = ImageTk.PhotoImage(PngImagePlugin.Image.open("Capture1.png"))
my_label = Label(image= my_img)
my_label.pack()

app.mainloop()

Однако конечный результат дает мне также прозрачные красные прямоугольники ... Не могли бы вы мне помочь с этим?

Я хотел попробовать второй метод, в котором вы используете код для рисования красных прямоугольников вместо изображений, но я действительно не знаю, как ...

Держу пари, это глупый вопрос, но спасибо всем, кто хочет на это ответить.

1 Ответ

3 голосов
/ 21 июня 2020

Это был замечательный вопрос ....

Я придумал решение этой проблемы. Атрибут -alpha используется для настройки прозрачности всего окна, а для настройки прозрачности только определенных частей (виджетов) окна мы используем атрибут -transparentcolor. Что мы делаем, так это назначаем цвет нашему прозрачному цвету, и всякий раз, когда мы будем использовать этот же цвет в качестве цвета bg любого виджета, он автоматически сделает этот конкретный виджет прозрачным по цвету.

Вот мой код. .

import tkinter as tkr
app = tkr.Tk()
app.title("AI Cashier")
app.geometry("1366x768")
app.wm_attributes("-transparentcolor", "white")  #the color "White" will now be used to represent a transparent background
app.config(bg = "White")
can = tkr.Canvas(app,bg = "White",highlightthickness = 0)
can.create_rectangle(100,50,160,100,outline = "Black",fill="red",width = 2)
can.create_rectangle(180,50,240,100,outline = "Black",fill="red",width = 2)
can.create_rectangle(260,50,320,100,outline = "Black",fill="red",width = 2)
can.pack()
app.mainloop()

Вывод -

введите описание изображения здесь

Надеюсь, это вам помогло ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...