Clutter não atualiza fora da tela de pontos de interrupção
-
22-07-2019 - |
Pergunta
Eu tenho algum código:
l1 = clutter.Label()
l1.set_position(100,100)
for i in range(0,10):
l1.set_text(str(i))
time.sleep(1)
Isso é projetado para mostrar uma contagem de 1 a 10 segundos na tela em desordem, mas eu estou recebendo um erro estranho. Quando eu executar o script normalmente a tela funciona como deveria fazer, mas não há nenhum texto exibido até 10 segundos são para cima. No entanto, quando eu corro com pontos de interrupção no APO os shows texto até muito bem.
Eu também estou recebendo um erro estranho no início do programa:
do_wait: drmWaitVBlank returned -1, IRQs don't seem to be working correctly.
Try adjusting the vlank_mode configuration parameter.
Mas eu não vejo por que afetaria o código fora do break points, mas não em pontos de interrupção.
Qualquer ajuda seria muito apreciada.
Solução
Não tenho certeza se você já descobriu a resposta para isso, mas:
A razão que você está tendo esse problema é porque você está bloqueando o segmento principal (onde todo o desenho ocorre) com o seu time.sleep () chamadas, impedindo a biblioteca de redesenhar a tela.
por exemplo. seu código está fazendo isso:
- Clutter redesenha a tela.
- Você circuito de mais de dez segundos e mudar os tempos de texto dez.
- Clutter redesenha a tela.
Se você quiser fila de algo em um timer, você deve olhar para gobject.timeout_add .