Skip to content

Exit() function don't work in python mode #222

@BeavesBSB

Description

@BeavesBSB

Hi,

I'm create this code in processing python mode (Processing 4.3), but when key tab is pressed the window don't close. I tried in Debian 12 and Windows 11.

Follow the code:

`segmentos=[
#a,b,c,d,e,f,g
[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
]

c = 96 # Comprimento
l = 24 # Largura
m = 48 # Meio
x = 340
y = 160
numeroStr = ''
#Variáveis para o cálculo da média
amostra=""
list_amostra=[]
soma=0
media=0
xm=780
ym=460
lm=2l/4
cm=2
c/4
mm=2*m/4
med=[0,0,0,0]
#Variáveis para mostra a quantidade palpites
xp=170
yp=460

def setup():
fullScreen()
#surface.setUndecorated(True)
smooth()
noStroke()
background(0)
textSize(70)

def draw():
global media, soma, list_amostra
background(0)
fill(255)

if list_amostra:
    media = float(soma) / len(list_amostra)
else:
    media = 0
text("Media", 860, 630)
text("Palpites", 220,630) 
fill(255,0,0)
if numeroStr:
    displayNumber(numeroStr,x,y,c,l,m)
drawMedia(int(media),xm,ym,cm,lm,mm)
drawPalpites(list_amostra, xp, yp, cm, lm, mm)

def displayNumber(num_str, x, y, c,l,m):

num_str=num_str.zfill(4)
for i, digit in enumerate(num_str):
    drawDigito(segmentos[int(digit)],x+164*i,y,c,l,m) 

def displayPalpites(num_str, x, y, c,l,m):
num_str=num_str.zfill(4)
for i, digit in enumerate(num_str):
drawDigito(segmentos[int(digit)],x+96*i,y,c,l,m)

def drawDigito(digito,x,y,c,l,m):
#Segmento "a"
if digito[0] == 1:
beginShape()
vertex(x+l/2,y) #vertice a
vertex(x+3l/2,y-l/2) #vertice b
vertex(x+3
l/2+m,y-l/2) #vertice c
vertex(x+l/2+c,y) #vertice d
vertex(x+3l/2+m,y+l/2) #vertice e
vertex(x+3
l/2,y+l/2) #vertice f
endShape()

    #Segmento b
if digito[1] == 1:
    beginShape()
    vertex(x+c+l,y) #vértice a
    vertex(x+3*l/2+c,y+l) #vertice b
    vertex(x+3*l/2+c,y+l+m) #vertice c
    vertex(x+c+l,y+c) #vertice d
    vertex(x+l/2+c,y+l+m) #vertice e
    vertex(x+l/2+c,y+l) #vertice f
    endShape()
    
#Segmento c
if digito[2] == 1:
    beginShape()
    vertex(x+c+l,y+c) #vértice a
    vertex(x+3*l/2+c,y+l+c) #vertice b
    vertex(x+3*l/2+c,y+l+m+c) #vertice c
    vertex(x+c+l,y+2*c) #vertice d
    vertex(x+l/2+c,y+l+m+c) #vertice e
    vertex(x+l/2+c,y+l+c) #vertice f
    endShape()
    
    #Segmento d
if digito[3] == 1:
    beginShape()
    vertex(x+l/2,y+2*c) #vertice a
    vertex(x+3*l/2,y-l/2+2*c) #vertice b
    vertex(x+3*l/2+m,y-l/2+2*c) #vertice c
    vertex(x+l/2+c,y+2*c) #vertice d
    vertex(x+3*l/2+m,y+l/2+2*c) #vertice e
    vertex(x+3*l/2,y+l/2+2*c) #vertice f
    endShape()
    
#Segmento e
if digito[4] == 1:
    beginShape()
    vertex(x,y+c) #vértice a
    vertex(x+l/2,y+l+c) #vertice b
    vertex(x+l/2,y+l+m+c) #vertice c
    vertex(x,y+2*c) #vertice d
    vertex(x-l/2,y+l+m+c) #vertice e
    vertex(x-l/2,y+l+c) #vertice f
    endShape()
    
#Segmento f
if digito[5] == 1:
    beginShape()
    vertex(x,y) #vértice a
    vertex(x+l/2,y+l) #vertice b
    vertex(x+l/2,y+l+m) #vertice c
    vertex(x,y+c) #vertice d
    vertex(x-l/2,y+l+m) #vertice e
    vertex(x-l/2,y+l) #vertice f
    endShape()
    
#Segmento g
if digito[6] == 1:
    beginShape()
    vertex(x+l/2,y+c) #vertice a
    vertex(x+3*l/2,y-l/2+c) #vertice b
    vertex(x+3*l/2+m,y-l/2+c) #vertice c
    vertex(x+l/2+c,y+c) #vertice d
    vertex(x+3*l/2+m,y+l/2+c) #vertice e
    vertex(x+3*l/2,y+l/2+c) #vertice f
    endShape()

def drawMedia(media, xm, ym, cm, lm, mm):
# Atualização para colocar os dígitos da média na lista med
# Se a média for menor que 10, evitamos preencher med[0], med[1] e med[2] com zeros
if media < 10:
med = [0, 0, 0, media]
elif media < 100:
med = [0, 0, media // 10, media % 10]
elif media < 1000:
med = [0, media // 100, (media // 10) % 10, media % 10]
else:
med = [media // 1000, (media % 1000) // 100, ((media % 1000) % 100) // 10, ((media % 1000) % 100) % 10]

first_non_zero_found = False  # Variável de controle para saber se o primeiro dígito não-zero foi encontrado
for i, val in enumerate(med):
    # Não desenha zeros mais significativos (à esquerda)
    if val != 0:
        first_non_zero_found = True
    # Desenha os dígitos zero após encontrar o primeiro dígito não-zero
    if val != 0 or (val == 0 and first_non_zero_found):
        x_pos = xm + i * 96
        drawDigito(segmentos[val], x_pos, ym, cm, lm, mm)

def drawPalpites(list_amostra, xp, yp, cm, lm, mm):
sample_count = len(list_amostra) # A contagem de amostras é o comprimento da lista
sample_str = str(sample_count).zfill(3) # Convertendo a contagem para uma string
displayPalpites(sample_str, xp, yp, cm, lm, mm)

def keyPressed():
global numeroStr, soma, list_amostra
if key >= '0' and key <= '9' and len(numeroStr) < 4:
numeroStr += key
elif key == ENTER or key == RETURN:
if numeroStr:
valor = int(numeroStr)
list_amostra.append(valor)
soma += valor
with open('amostra.txt', 'a') as output:
output.write(numeroStr + '\n')
# Limpar numeroStr para nova entrada após salvar
numeroStr = ""
elif key == BACKSPACE:
numeroStr = numeroStr[:-1]
elif key == TAB:
exit() `

Tanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions