Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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