Проблема с фоновыми метками Python Tkinter - PullRequest
0 голосов
/ 02 февраля 2019

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

PD: Я использовал canvas, но с этим было много проблем, однако я думаю, что сделать canvas - это решение, ноЯ не знаю, как это сделать

Снимок экрана :

enter image description here

Код :

from tkinter import *
import winsound
from winsound import *
from tkinter import messagebox
import time

#creamos la ventana

raiz=Tk()

raiz.title("MYRIAD ALLIANCE: ORIGINS")
raiz.geometry("900x550")
raiz.resizable(0,0)
raiz.iconbitmap("C:\\Users\\shado\\Desktop\\Myadorigins\\descarga.ico")
#winsound.PlaySound('C:\\Users\\shado\\Downloads\\pygame\\MY\\dark.wav', winsound.SND_ALIAS | winsound.SND_ASYNC)

#----------------------aa
def ventanas(frame):
    frame.tkrise()

def jugar():
    messagebox.showinfo("Próximamente...", "Esta opción estará disponible próximamente...")

def quitar():
    if messagebox.askokcancel("Saliendo...", "¿Estas seguro de que quieres salir?"):
        raiz.destroy()

def clickDerecho(event):
    jugar()

def clickDerecho2(event):
    quitar()

#frames--------------------------------------------------------------------

frameJugar = Frame()

fondo = PhotoImage(file= r'C:\Users\shado\Desktop\Myadorigins\background.png')
background_label = Label(raiz, image=fondo)
background_label.place(x=0, y=0, relwidth=1, relheight=1)


texto = Label(raiz, text="JUGAR" ,bd=0, font=("COMIC SANS MS", 30, "italic"), fg="#00deff", cursor="hand2")
texto.bind("<Button-1>", clickDerecho)
texto.place(x=100, y=196)

texto2 = Label(raiz, text="TUTORIAL" ,bd=0, font=("COMIC SANS MS", 30, "italic"), fg="#00deff", cursor="hand2")
texto2.bind("<Button-1>", clickDerecho)
texto2.place(x=100, y=306)

texto3 = Label(raiz, text="SALIR" ,bd=0, font=("COMIC SANS MS", 30, "italic"), fg="#00deff", cursor="hand2")
texto3.bind("<Button-1>", clickDerecho2)
texto3.place(x=100, y=416)

#-----------------------------------------------------------------ejecutamos la ventana

raiz.protocol("WM_DELETE_WINDOW", quitar)
raiz.mainloop()

1 Ответ

0 голосов
/ 02 февраля 2019

Вы можете попробовать установить цвет фона, используя следующий код:

label.config(bg="gray")

Вы можете попытаться сделать цвет фона прозрачным:

root.wm_attributes('-transparentcolor', root['bg'])

, чтобы сделать цвет по умолчанию прозрачным илипросто используйте canvas, который должен выглядеть примерно так:

canvas.create_text (x, y, text = "Some text", ...)

Я видел, как кто-то делал обходной путь, используя PIL,но по-немецки: https://www.python -forum.de / viewtopic.php? t = 20573

В любом случае, то, что вы планируете сделать, с помощью tkinter кажется довольно сложным.Возможно, вам следует просто выбрать другую библиотеку графического интерфейса на случай, если вы планируете добавить больше необычных функций в свой интерфейс.

Редактировать:

Так почему бы вам не попробовать это:

import Tkinter as    tk
from   PIL    import Image, ImageTk, ImageDraw
from   os     import listdir,curdir

class BlendedRectangle(object):

def __init__(self, xpos=0, ypos=0, width=10, height=10, image=None,
        fill='black', intensity=1.0):

        self.xpos = xpos
        self.ypos = ypos
        self.width = width
        self.height = height
        self.image = image
        self.fill = fill
        self.intensity = intensity


        self.coords = (self.xpos, self.ypos, self.xpos+self.width,
            self.ypos+self.height)


        self.bottom_image = self.image.crop(self.coords)


        self.top_image = self.image.crop(self.coords)

        self.draw = ImageDraw.Draw(self.top_image)

        self.draw.polygon([
            (0, 0), (self.width, 0), (self.width, self.height),
            (0, self.height), (0, 0)], fill= self.fill)

        self.blended_graphic_obj = Image.blend(self.bottom_image,
            self.top_image, self.intensity)

        self.image.paste(self.blended_graphic_obj, (self.xpos , self.ypos))

        self.tk_image  = ImageTk.PhotoImage(self.image)

root = tk.Tk()

image = Image.open("my_image.jpg")
image_width, image_height = image.size

canvas = tk.Canvas(root, width=image_width, height=image_height)
canvas.pack()

image_obj = BlendedRectangle(10, 10, 50, 50, image, 'red', intensity=0.3)
canvas.create_image(0, 0, image=image_obj.tk_image, anchor='nw')

root.mainloop()
...