DietPI: _tkinter.TclError: sem nome de exibição e sem variável de ambiente $ DISPLAY

venum

eu quero executar um script python em dietPI. Escolhi dietPI porque quero inicializar rápido.

Quando executo um programa tkinter simples, recebo o erro. _tkinter.TclError: no display name and no $DISPLAY environment variableJá tentei definir uma variável de exibição como esta: export DISPLAY=:0 (também tentei outros números)

mas então eu entendo _tkinter.TclError: couldn't connect to display ":0.0"

Qualquer ajuda?

Albert Renshaw

Isso me levou o dia todo para começar a trabalhar. (Eu também postei a mesma resposta em um site de SE diferente aqui: https://raspberrypi.stackexchange.com/a/118928/60683 )

Nota: Isto é para raspbian, com a conta de usuário principal usando o nome de usuário padrão ("pi")

Aqui estão as etapas em ordem:


Nomeie seu arquivo Python main.pye arraste-o para a área de trabalho.


Em seguida, crie um novo arquivo de texto simples e adicione o seguinte conteúdo:

#!/bin/bash

python3 /home/pi/Desktop/main.py

Salve este arquivo de texto como launch.commandna área de trabalho. Este é um script de shell para iniciar seu arquivo python. Por padrão, não vai funcionar, temos que fazer um chmod (próxima etapa)


Execute o terminal e execute o seguinte comando:

chmod u+x /home/pi/Desktop/launch.command

Agora, clique duas vezes em launch.command (e selecione execute) para iniciar seu arquivo python.


Neste ponto, estamos prontos para lançá-lo na inicialização. Se você fez qualquer outra tentativa de inicialização antes disso, desfaça todas as alterações feitas no arquivo .


Abra o terminal e execute o seguinte:

sudo nano /etc/systemd/system/myproject.service

Vamos apenas chamá-lo de meu projeto por enquanto, não mude nada até depois de colocá-lo em funcionamento, então sinta-se à vontade para tentar renomear


Na janela que aparece, copie e cole exatamente o seguinte:

[Unit]
Description=Start Myproject
After=graphical.target
Wants=graphical.target

[Service]
User=pi
Group=pi
ExecStart=/bin/bash -c "export DISPLAY=:0; export XAUTHORITY=/home/pi/.Xauthority; /home/pi/Desktop/launch.command"

[Install]
WantedBy=graphical.target

Agora pressione ctrl + x para sair e salvar, ele irá solicitar que você salve as alterações, digite "y", o nome do arquivo já deve estar inserido como ... / meuprojeto.serviço, se estiver, pressione Enter e ele salvará e saia, se o nome do arquivo estiver em branco está bagunçado (isso só acontece às vezes), feche o terminal e tente tudo de novo, desculpe.


Agora no terminal, digite:

sudo systemctl daemon-reload

Então

sudo systemctl enable myproject.service

Por último

sudo reboot


No lançamento, antes que qualquer coisa apareça (depois que a tela inicial de inicialização for exibida, é claro, mas antes que a área de trabalho seja exibida), sua GUI será iniciada agora, parabéns!

Eu recomendo que você inicie em tela cheia, para fazer isso, edite seu arquivo python para usar isto:

root.attributes('-fullscreen', True)

NOTA, 'root' provavelmente não é o que você chamou de seu TK () init .... no final do seu código você tem algo como XXXX.mainloop(), mude 'root' para o que quer que seja XXXX, coloque isto logo após seu init deTK()


Depois de reiniciar, você provavelmente está preso no aplicativo (especialmente se o abriu em tela cheia), coisas como alt + f4 ou alt + f11 não irão matar seu programa. Para sair, pressione o botão windows / menu em seu teclado, o painel de acesso irá aparecer e você pode ir para acessórios> terminal para abrir uma nova janela de terminal, então execute o seguinte:

sudo systemctl stop myproject.service

O programa será encerrado e você voltará à sua área de trabalho padrão ...

AGORA, para evitar que seja iniciado novamente na inicialização, simplesmente renomeie o launch.commandarquivo para DISABLED_launch.commande, quando estiver pronto para iniciar a inicialização novamente, defina o nome de volta.


Vá buscar uma bebida, você merece.

Além disso, você pode obviamente colocar esses locais diferentes da área de trabalho, mas CERTIFIQUE-SE de usar sempre o caminho completo em qualquer um desses comandos, não use o atalho '~ / ..'.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

tkinter.TclError: sem nome de exibição e sem variável de ambiente $ DISPLAY python

_tkinter.TclError: nenhum nome para exibição e nenhuma variável de ambiente $ DISPLAY

Problema de backend do Matplotlib _tkinter.TclError: nenhum nome de exibição e nenhuma variável de ambiente $ DISPLAY

TclError: nenhum nome de exibição e nenhuma variável de ambiente $ DISPLAY no EC2

Módulo Tkinter em repl.it "sem nome de exibição ou $ DISPLAY

Módulo Tkinter em repl.it "sem nome de exibição ou $ DISPLAY

Definir a variável de ambiente globalmente sem reiniciar o Ubuntu

aplicativo tomcat sem nome de exibição

Sem servidor - como passar o nome do intervalo S3 como uma variável de ambiente para meu aplicativo

python tkinter: saindo do loop sem obter _tkinter.TclError: nome de comando inválido

Declaração de variável sem nome - por que funciona?

A definição do componente está sem o nome de exibição react / display-name

Como posso alterar uma variável de ambiente e fazer com que outros aplicativos vejam o valor sem fazer logoff?

Laravel e variáveis de ambiente na produção de linha de comando sem arquivo .env

Desativar variável de ambiente de funções de nuvem do firebase sem atualização

CMake - Passar variável de ambiente sem expandir

Próxima implantação JS sem servidor no AWS ECS / Fargate: problema de variável de ambiente

Como obter o url do gateway de API na variável de ambiente sem servidor

A definição do componente está sem nome de exibição; lintreact / nome de exibição

Variável de condição Pthread e sem deadlock

Posso exportar uma variável para o ambiente de um script bash sem terceirizar?

Definir variáveis de ambiente sem conversão entre string e número inteiro

Recarregar variáveis de ambiente sem reiniciar o Excel?

Sem servidor offline não leva variáveis de ambiente

É possível alterar o nome de exibição do aplicativo sem alterar o nome do módulo?

Variável de encaminhamento perfeita com tipo sem nome

Como usar o nome da variável de geração em tempo real sem atribuição?

exportar ambiente conda sem variável de prefixo, que mostra o caminho local para o executável

Variável sem nome: $ {''}

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo