Je crée un programme tkinter qui comptera et affichera un nombre en utilisant une police à sept segments que j'ai créée. Ce que je veux réaliser, c'est lorsqu'un segment n'est pas utilisé, plutôt que de ne pas s'afficher, je le veux dans une couleur plus foncée. L'exemple est qu'il ressemble à:

7seg example

J'ai créé 2 polices, 7seg (police normale) et 7seg inversé (segments inutilisés montrant une couleur plus foncée) et je voulais superposer les 2 les uns sur les autres avec le bg sur l'image du haut étant transparent. J'ai essayé d'utiliser wm_attributes mais cela rend le tout transparent, pas seulement l'étiquette du haut. Je ne sais pas si c'est même possible ...

Le code concernant cette partie est:

segment_invert = Label(tab2, text = "888", font = ("7Seg_invert", 150), fg = "#800000",
                       bg = "black")
segment_invert.place(x = 20, y = 30)

segment = Label(tab2, text = "888", font = ("7 Segment none just", 150), fg = "red")
segment.place(x = 20, y = 30)

Fondamentalement, je veux que le haut Label soit transparent et ne montre que les segments non utilisés révélant les segments utilisés ci-dessous.

Voici à quoi cela ressemble actuellement:

current image

0
Frazer 13 févr. 2021 à 20:24

1 réponse

Meilleure réponse

Merci, le créer comme une toile fait exactement ce que je veux

    import tkinter
from tkinter import ttk, Button, NORMAL, DISABLED, W, LabelFrame, Frame, Label, font, Canvas, Entry

main = tkinter.Tk()

std_size_w, std_size_h = "800","500"
main.geometry(f"{std_size_w}x{std_size_h}")
main.minsize(width = (int(std_size_w)), height = ((int(std_size_h))-300))


# Tabs
tab_setup = ttk.Notebook(main)

# Tab 1 Serial
tab1 = LabelFrame(tab_setup, text = "Setup Serial")
tab_setup.add(tab1, text = "Serial Setup")

tab2 = LabelFrame(tab_setup)
tab_setup.add(tab2, text = "Azkoyne Hopper U")

tab_setup.pack(expand=1, fill = "both", padx = 10, pady = 10)


canvas1 = Canvas(tab2, width = 400, height = 200, bg = "black") 
canvas1.pack()


canvas1.create_text(200, 100, text = "888", font = ("7 Segment none just", 150), fill = "#4d0000")
canvas1.create_text(200, 100, text = "000", font = ("7 Segment none just", 150), fill = "red")



main.mainloop()

Capture d'écran ici image de travail

0
Frazer 13 févr. 2021 à 18:39