python прозрачность tkinter, унаследованная всеми виджетами в root - PullRequest
0 голосов
/ 14 марта 2020

У меня есть root окно, которое прозрачно. У меня также есть ярлык, который является дочерним элементом окна root. Я заметил, что этикетка также прозрачна как root. Ниже приведен код, который я использую:

try:
    import tkinter as tk
except ImportError:
    import Tkinter as tk

root = tk.Tk()

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

def exit(event):
    root.destroy()

class TestApp:
    def __init__(self, parent):
        self.parent = parent
        self.label = tk.Label(self.parent, font=("Arial", 18, 'bold'),
                        width=30, fg="red")
        self.label.configure(text="Test message")
        self.label.pack()


if __name__ == "__main__":
    testApp = TestApp(root)

    root.bind("<Key>", exit)
    root.geometry("%sx%s" % (screen_width, screen_height))
    root.attributes('-alpha', 0.3)
    root.overrideredirect(True)
    root.lower()
    root.wm_attributes("-topmost", True)
    root.wm_attributes("-disabled", True)
    root.wm_attributes("-transparentcolor", "white")
    root.mainloop()

Если значение alpha равно 0.3 (в строке root .attributes ('- alpha', 0.3)), то текст отображается на экран, но если это 0.0, то текст не отображается на экране. Просто хочу узнать, как можно установить прозрачность для root на 0,0, и чтобы текст метки был виден на экране

1 Ответ

0 голосов
/ 14 марта 2020
root.wm_attributes("-transparentcolor","white")

Это сделает цвет, который вы даете, прозрачным. Если вы хотите сделать root фон прозрачным, вы можете использовать root.wm_attributes("-transparentcolor", root['bg']). И тогда вам не нужно устанавливать root.attributes('-alpha', 0.3)

Ваш код должен быть:

try:
    import tkinter as tk
except ImportError:
    import Tkinter as tk

root = tk.Tk()

screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()

def exit(event):
    root.destroy()

class TestApp:
    def __init__(self, parent):
        self.parent = parent
        self.label = tk.Label(self.parent, font=("Arial", 18, 'bold'),
                        width=30, fg="red")
        self.label.configure(text="Test message")
        self.label.pack()


if __name__ == "__main__":
    testApp = TestApp(root)

    root.bind("<Key>", exit)
    root.geometry("%sx%s" % (screen_width, screen_height))
    root.overrideredirect(True)
    root.lower()
    root.wm_attributes("-topmost", True)
    root.wm_attributes("-disabled", True)
    root.wm_attributes("-transparentcolor", root['bg'])
    root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...