Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/12/2018, à 08:58

Compte supprimé

[Résolu]Python:Je souhaite afficher en géant un chiffre à l'écran...

Bonjour,
Je débute en python...
Je souhaite afficher à l'écran un chiffre de 0 à 9 dont l'affichage occuperait la moitié de l'écran.
Je ne sais pas trop comment aborder ça ...
Aussi , si vous avez des idées sur la façon de procéder ,  je vous en remercie .

Dernière modification par Compte supprimé (Le 23/12/2018, à 12:01)

#2 Le 23/12/2018, à 11:35

kholo

Re : [Résolu]Python:Je souhaite afficher en géant un chiffre à l'écran...

salut,
hum... soit tu utilises un label et tu joues sur le taille des caractères...
trouvé ici

#!/usr/bin/env python
# -*- coding: UTF8 -*-

import tkinter as tk

def countdown(count):
    # change text in label        
    label['text'] = count

    if count > 0:
        # call countdown again after 1000ms (1s)
        root.after(1000, countdown, count-1)

root = tk.Tk()

label = tk.Label(root)
label.config(font=("Courier", 100))
label.place(x=35, y=15)

# call countdown first time    
countdown(5)
# root.after(0, countdown, 5)

root.mainloop()

soit tu utilises canvas et tu crées chaque digit en bâton comme les premières montres à quartz...
trouvé ici

#!/usr/bin/env python
# -*- coding: UTF8 -*-

'''Seven segment display of hex digits.'''
import tkinter as tk
root = tk.Tk()
screen = tk.Canvas(root)
screen.grid()

# Order 7 segments clockwise from top left, with crossbar last.
# Coordinates of each segment are (x0, y0, x1, y1) 
# given as offsets from top left measured in segment lengths.
offsets = (
    (0, 0, 1, 0),  # top
    (1, 0, 1, 1),  # upper right
    (1, 1, 1, 2),  # lower right
    (0, 2, 1, 2),  # bottom
    (0, 1, 0, 2),  # lower left
    (0, 0, 0, 1),  # upper left
    (0, 1, 1, 1),  # middle
)
# Segments used for each digit; 0, 1 = off, on.
digits = (
    (1, 1, 1, 1, 1, 1, 0),  # 0
    (0, 1, 1, 0, 0, 0, 0),  # 1
    (1, 1, 0, 1, 1, 0, 1),  # 2
    (1, 1, 1, 1, 0, 0, 1),  # 3
    (0, 1, 1, 0, 0, 1, 1),  # 4
    (1, 0, 1, 1, 0, 1, 1),  # 5
    (1, 0, 1, 1, 1, 1, 1),  # 6
    (1, 1, 1, 0, 0, 0, 0),  # 7
    (1, 1, 1, 1, 1, 1, 1),  # 8
    (1, 1, 1, 1, 0, 1, 1),  # 9
)
    # (1, 1, 1, 0, 1, 1, 1),  # 10=A
    # (0, 0, 1, 1, 1, 1, 1),  # 11=b
    # (1, 0, 0, 1, 1, 1, 0),  # 12=C
    # (0, 1, 1, 1, 1, 0, 1),  # 13=d
    # (1, 0, 0, 1, 1, 1, 1),  # 14=E
    # (1, 0, 0, 0, 1, 1, 1),  # 15=F

class Digit:
    # def __init__(self, canvas, *, x=10, y=10, length=20, width=3):
    def __init__(self, canvas, *, x=10, y=10, length=100, width=3):
        self.canvas = canvas
        l = length
        self.segs = []
        for x0, y0, x1, y1 in offsets:
            self.segs.append(canvas.create_line(
                x + x0*l, y + y0*l, x + x1*l, y + y1*l,
                width=width, state = 'hidden'))
    def show(self, num):
        for iid, on in zip(self.segs, digits[num]):
            self.canvas.itemconfigure(iid, state = 'normal' if on else 'hidden')



dig = Digit(screen)
n = 0
def update():
    global n
    dig.show(n)
    n = (n+1) % 16
    root.after(1000, update)
root.after(1000, update)
root.mainloop()

quant à la taille des caractères c'est winfo
trouvé ici

la page a écrit :

To make the window full screen size, use this:

width = root.winfo_screenwidth()
height = root.winfo_screenheight()
root.geometry('%sx%s' % (width, height))

To make it half the screen size, just put /2 after width and height, like this:

root.geometry('%sx%s' % (width/2, height/2))

Hors ligne

#3 Le 23/12/2018, à 11:59

Compte supprimé

Re : [Résolu]Python:Je souhaite afficher en géant un chiffre à l'écran...

Merci kholo pour ta réponse et la recherche qu'elle implique wink
La solution n°1 me plaît bien . Je vais en étudier le détail ...
J'édite en résolu

#4 Le 23/12/2018, à 12:12

kholo

Re : [Résolu]Python:Je souhaite afficher en géant un chiffre à l'écran...

c'est un peu à l'arrache mais j'arrive à un truc comme ça :

#!/usr/bin/env python
# -*- coding: UTF8 -*-

import tkinter as tk

def countdown(count):
    label['text'] = count

    if count > 0:
        root.after(1000, countdown, count-1)

w = 300
h = 450
x = 0
y = 0
tc = 400 # taille des caractères
""" je part de 400 pour un écran en 1366 (ce que j'ai sous la main !) """

root = tk.Tk()

# rapport tc, w, h et écran
W = root.winfo_screenwidth()
H = root.winfo_screenheight()

w = 300
h = 450
tc = W * tc // 1366
w =  W * w // 1366
h =  W * h // 1366

label = tk.Label(root)
label.config(font=("Courier", tc))
label.pack()

countdown(5)

root.withdraw()
root.update_idletasks()

x = (root.winfo_screenwidth() - root.winfo_reqwidth()) // 2
y = (root.winfo_screenheight() - root.winfo_reqheight()) // 2

root.geometry('%dx%d+%d+%d' % (w, h, x, y))
root.deiconify()
root.mainloop()

Hors ligne

#5 Le 23/12/2018, à 12:24

Compte supprimé

Re : [Résolu]Python:Je souhaite afficher en géant un chiffre à l'écran...

Je n'ai pas encore eu le temps de me pencher sur la solution proposée , que tu m'adaptes le script .
Si ça continue tu vas écrire l'intégralité du script que je souhaite faire ^^.
J'en serais frustré .
Heureusement que j'en ai pas trop dit sur ce que je compte faire .. big_smile

#6 Le 23/12/2018, à 18:07

kholo

Re : [Résolu]Python:Je souhaite afficher en géant un chiffre à l'écran...

je viens de finir un mooc de python sur fun mooc... résultat 99%  cool
et je saute sur tous les pythons qui bougent !!!
si ce n'est pas encore fait, je t'invites à t'y pencher car la session est relancée : fun mooc python
... très bon !!! toi prendre !!! wink

Hors ligne

#7 Le 23/12/2018, à 18:22

Compte supprimé

Re : [Résolu]Python:Je souhaite afficher en géant un chiffre à l'écran...

... oui je l'ai suivi aussi wink
J'ai fait le tronc commun . Je garde les 3 dernières semaines pour plus tard.
J'ai eu aussi une bonne note 95% de mémoire cool (Bon moi j'ai parfois pianoté sur l'interpréteur avant de donner ma réponse )
J'ai apprécié ce mooc . Je ressens cependant le besoin de pratiquer et de reprendre les cours à mon rythme .

Dernière modification par Compte supprimé (Le 23/12/2018, à 18:23)