#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
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
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 ..
#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%
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 !!!
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
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 (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)