Background label

Résolu/Fermé
fred13330 Messages postés 8 Date d'inscription mercredi 21 décembre 2022 Statut Membre Dernière intervention 13 janvier 2023 - 13 janv. 2023 à 09:39
fred13330 Messages postés 8 Date d'inscription mercredi 21 décembre 2022 Statut Membre Dernière intervention 13 janvier 2023 - 13 janv. 2023 à 12:54

Bonjour,

J'aimerais que mes label "Ordinateur" et "Joueur" aient un fond transparent afin d'avoir l'effet marbre partout.

Merci de votre aide

Fred

import tkinter
import random
from tkinter import messagebox
from PIL import Image, ImageTk

# Résultat du tour
def coup(jeu_joueur):
    label_pc_jeu["bg"] = "white"
    label_joueur_jeu["bg"] = "white"
    label_joueur_jeu["text"] = jeu_joueur.title()
    jeu_pc_abrege  = tirage_pc()
    gestion_score(jeu_pc_abrege, jeu_joueur[0])


#  Tirage ordi
def tirage_pc():
    n = random.randrange(3)
    coup_pc = liste_objet[n]
    label_pc_jeu["text"] = coup_pc
    coup_pc_abrege = coup_pc[0]
    return coup_pc_abrege

# gestion du score
def gestion_score(pc, joueur):
    global score_pc, score_joueur
    resultat = dico_coup[pc + joueur]
    score_tour_pc = int(resultat[0])
    score_tour_joueur = int(resultat[1])
    gestion_couleur_score(score_tour_pc, score_tour_joueur)
    score_pc += score_tour_pc
    score_joueur += score_tour_joueur
    label_pc_score["text"] = score_pc
    label_joueur_score["text"] = score_joueur
    gestion_tour()

# Gesion des tours
def gestion_tour():
    global tour
    tour -= 1
    label_nb_tour["text"] = tour
    if tour <= 1:
        label_tour["text"] = "Tour"
    if tour == 0:
        message = "       Score final:\nOrdinateur : {} - Joueur : {}\n   Une autre partie".format(score_pc, score_joueur)
        fin_partie(message)

# Gestion couleur des score
def gestion_couleur_score(pc, joueur):
    if pc > joueur:
        label_pc_jeu["bg"] = "green"
    elif joueur > pc:
        label_joueur_jeu["bg"] = "green"

# Fin de la partie
def fin_partie(message):
    choix = tkinter.messagebox.askyesno(title="Fin de la partie", message=message)
    if choix:
        global score_pc, score_joueur, tour
        score_pc = 0
        score_joueur = 0
        tour = 5
        label_pc_score["text"] = 0
        label_joueur_score["text"] = "0"
        label_pc_jeu.configure(bg="white", text="")
        label_joueur_jeu.configure(bg="white", text="")
        label_nb_tour["text"] = tour
    else:
        fenetre.quit()

score_pc = 0
score_joueur = 0
tour = 5
joueur = "Joueur"


liste_objet = ["Pierre", "Ciseau", "Feuille"]

dico_coup = {"PP": (0, 0), "PC": (1, 0), "PF": (0, 1),
             "CC": (0, 0), "CF": (1, 0), "CP": (0, 1),
             "FF": (0, 0), "FP": (1, 0), "FC": (0, 1)}

# Programme principal

# Création de la fenêtre de jeu
fenetre = tkinter.Tk()
fenetre.geometry("450x400")
fenetre.title("Shifumi")

image = Image.open("marbre.jpg")
resized_image = image.resize((450,400))
photo = ImageTk.PhotoImage(resized_image)
canvas = tkinter.Canvas(fenetre)
canvas.pack(expand=True, fill="both")
canvas.create_image(0, 0, anchor="nw", image=photo)

# Création des labels
label_pc = tkinter.Label(fenetre, text="Ordinateur", bg="SystemButtonFace", width=10)
canvas.create_window(138, 110, window=label_pc)
label_joueur = tkinter.Label(fenetre, text="Joueur", bg="SystemButtonFace", width=10)
canvas.create_window(338, 110, window=label_joueur)
label_pc_jeu = tkinter.Label(fenetre, text="", bg="white", width=10)
label_pc_jeu.place(x=100, y=120)
label_joueur_jeu = tkinter.Label(fenetre, text="", bg="white", width=10)
label_joueur_jeu.place(x=300, y=120)
label_pc_score = tkinter.Label(fenetre, text="0", bg="white", width=10)
label_pc_score.place(x=100, y=160)
label_joueur_score = tkinter.Label(fenetre, text="0", bg="white", width=10)
label_joueur_score.place(x=300, y=160)
label_tour = tkinter.Label(fenetre, text="Tours", bg="light grey")
label_tour.place(x=220, y=120)
label_nb_tour = tkinter.Label(fenetre, text=tour, bg="white")
label_nb_tour.place(x=230, y=140)

# Création des boutons
bouton_quitte = tkinter.Button(fenetre, text="Quitter", command=fenetre.quit)
canvas.create_window(380, 350, window=bouton_quitte)
bouton_pierre = tkinter.Button(fenetre, text="Pierre", command=lambda k="Pierre": coup(k))
canvas.create_window(140, 300, window=bouton_pierre)
bouton_ciseau = tkinter.Button(fenetre, text="Ciseau", command=lambda k="Ciseau": coup(k))
canvas.create_window(240, 300, window=bouton_ciseau)
bouton_feuille = tkinter.Button(fenetre, text="Feuille", command=lambda k="Feuille": coup(k))
canvas.create_window(340, 300, window=bouton_feuille)

fenetre.mainloop()


Windows / Firefox 102.0

A voir également:

3 réponses

Bonjour, c'est impossible.

.

Mais utilisant un canvas, pourquoi ne pas utiliser des items canvas eu lieu de labels, buttons ?

De cette façon tu pourras avoir des éléments transparents.

0
fred13330 Messages postés 8 Date d'inscription mercredi 21 décembre 2022 Statut Membre Dernière intervention 13 janvier 2023
13 janv. 2023 à 11:33

Merci, Je débute et je n'ai donc pas tous les réflexes ;)

0

Si tu débutes, ça ne va pas être facile de réaliser cela, il va falloir potasser la doc du Canvas tkinter, je ne sais si le jeu en vaut la chandelle, à moins que tu ne veuilles vraiment obtenir une apparence par transparence, généralement, ça ne rend pas si bien que ça.

0
fred13330 Messages postés 8 Date d'inscription mercredi 21 décembre 2022 Statut Membre Dernière intervention 13 janvier 2023
13 janv. 2023 à 12:54

C'était juste une envie comme ça et ce n'est pas le plus important. Donc je ne vais pas passer un temps de dingue sur ce détail.

0