[python-brasil] Como usar o Teclado

577 views
Skip to first unread message

soldadomecatronico

unread,
Jul 28, 2007, 4:00:36 PM7/28/07
to python...@yahoogrupos.com.br

Olá pessoal, qual é o código python para eu mover algum objeto ou
acessar outro menu sem precisar apertar por ex.: 1 e enter para entrar
em um menu.
desde ja agradeço pela ajuda.

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Paul Eipper

unread,
Jul 28, 2007, 6:26:47 PM7/28/07
to python...@yahoogrupos.com.br

Que menu? Que objeto? especifique melhor, por favor. E coloque um
exemplo de seu código também para facilitar as respostas.

--
Paul Eipper

Em 28/07/07, soldadomecatronico<esdras-tito@hotmail.com> escreveu:


> Olá pessoal, qual é o código python para eu mover algum objeto ou
> acessar outro menu sem precisar apertar por ex.: 1 e enter para entrar
> em um menu.
> desde ja agradeço pela ajuda.
>
>
>

> ,----------------------------------------------------------.


> | Antes de enviar um e-mail para o grupo leia: |
> | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
> | E se você é usuário do BOL lembre-se de cadastrar o |
> | e-mail do grupo na lista branca do seu sistema anti-spam. |

> `----------------------------------------------------------´
> Links do Yahoo! Grupos
>
>
>

__._,_.___

__,_._,___

soldadomecatronico

unread,
Jul 28, 2007, 10:49:30 PM7/28/07
to python...@yahoogrupos.com.br

Menu1
========
1: jogar
2: sair
========
quando eu apertar a '*tecla 1' ele vai diretamente a outra parte do
código(menu2).
* ao invez d apertar 1 e enter, eu quero somente apertar a 'tecla 1'
para ele ir para o outro código(menu2).
se não der para entender é só falar q eu vo tntar explicar o melhor
e o mais simples possivel.

menu2
=================
1: configurações
2: voltar
=================

--- Em python-brasil@yahoogrupos.com.br, "Paul Eipper"
<lkraider@...> escreveu


>
> Que menu? Que objeto? especifique melhor, por favor. E coloque um
> exemplo de seu código também para facilitar as respostas.
>
> --
> Paul Eipper
>

> Em 28/07/07, soldadomecatronico<esdras-tito@...> escreveu:

Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Bruno Gola

unread,
Jul 29, 2007, 6:25:02 AM7/29/07
to python...@yahoogrupos.com.br

Opa,



On 7/28/07, soldadomecatronico <esdras-tito@hotmail.com> wrote:
> Menu1
> ========
> 1: jogar
> 2: sair
> ========
> quando eu apertar a '*tecla 1' ele vai diretamente a outra parte do
> código(menu2).
> * ao invez d apertar 1 e enter, eu quero somente apertar a 'tecla 1'
> para ele ir para o outro código(menu2).

Pra isso você precisa dar uma olhada na biblioteca curses.

Em [1] tem muita informação e no google tem bastante coisa (em ingles :P) :)

[1] http://www.amk.ca/python/howto/curses/

[]'s,
--
Bruno Fialho Marques Gola <brunogola@gmail.com>
http://www.brunogola.com.br
Cel: (11) 9294-5883


__,_._,___

Nilton Volpato

unread,
Jul 29, 2007, 5:33:42 PM7/29/07
to python...@yahoogrupos.com.br

Olá soldadomecatronico[*],

Fazer isso não é muito simples, pois é feito de maneira diferente
dependendo do sistema operacional. Veja abaixo:

* no windows
import msvcrt
def getchar():
return msvcrt.getch()

* no linux
import termios, sys
def getchar():
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = old[:]
new[3] = new[3] & ~termios.ICANON & ~termios.ECHO
new[6] [termios.VMIN] = 1
new[6] [termios.VTIME] = 0
try:
termios.tcsetattr(fd, termios.TCSANOW, new)
termios.tcsendbreak(fd,0)
ch = os.read(fd,7)
finally:
termios.tcsetattr(fd, termios.TCSAFLUSH, old)
return ch

[*] É boa prática assinar seu nome no fim da mensagem para que as
pessoas saibam como te chamar.

Abraços,
-- Nilton



On 7/28/07, soldadomecatronico <esdras-tito@hotmail.com> wrote:


__,_._,___

soldadomecatronico

unread,
Jul 30, 2007, 1:37:11 AM7/30/07
to python...@yahoogrupos.com.br

Sr Nilton, valeu mais naum consegui entender c vc puder simplificar
mais para mim eu agradeço. O SO é Windows...ai agora fica mais
facil. Eu procurei sobre o assunto no google mais não encontrei!

valeu, Esdras!

--- Em python-brasil@yahoogrupos.com.br, "Nilton Volpato"
<nilton.volpato@...> escreveu

> On 7/28/07, soldadomecatronico <esdras-tito@...> wrote:
> > Menu1
> > ========
> > 1: jogar
> > 2: sair
> > ========
> > quando eu apertar a '*tecla 1' ele vai diretamente a outra parte
do
> > código(menu2).
> > * ao invez d apertar 1 e enter, eu quero somente apertar
a 'tecla 1'
> > para ele ir para o outro código(menu2).
> > se não der para entender é só falar q eu vo tntar explicar o
melhor
> > e o mais simples possivel.
> >
> > menu2
> > =================
> > 1: configurações
> > 2: voltar
> > =================
> >
> >
> >
> > --- Em python-brasil@yahoogrupos.com.br, "Paul Eipper"

> > <lkraider@> escreveu


> > >
> > > Que menu? Que objeto? especifique melhor, por favor. E coloque
um
> > > exemplo de seu código também para facilitar as respostas.
> > >
> > > --
> > > Paul Eipper
> > >

> > > Em 28/07/07, soldadomecatronico<esdras-tito@> escreveu:

Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Bruno Gola

unread,
Jul 30, 2007, 8:11:22 AM7/30/07
to python...@yahoogrupos.com.br

No Windows voce deve olhar a lib msvcrt, principalmente o método getch.

Procura no google por msvcrt.getch

mas o exemplo do Nilton foi o seguinte:

import msvcrt

def pega_char():
print "1 - bla\n2 - ble"
c = msvcrt.getch()

[]'s,



On 7/30/07, soldadomecatronico <esdras-tito@hotmail.com> wrote:
>
> Sr Nilton, valeu mais naum consegui entender c vc puder simplificar
> mais para mim eu agradeço. O SO é Windows...ai agora fica mais
> facil. Eu procurei sobre o assunto no google mais não encontrei!
>
> valeu, Esdras!
>

> --- Em python-brasil@yahoogrupos.com.br<python-brasil%40yahoogrupos.com.br>,

> > > --- Em python-brasil@yahoogrupos.com.br<python-brasil%40yahoogrupos.com.br>,

--
Bruno Fialho Marques Gola <brunogola@gmail.com>
http://www.brunogola.com.br
Cel: (11) 9294-5883

[As partes desta mensagem que não continham texto foram removidas]

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Nilton Volpato

unread,
Jul 31, 2007, 12:02:42 AM7/31/07
to python...@yahoogrupos.com.br

Esdras,



On 7/30/07, soldadomecatronico <esdras-tito@hotmail.com> wrote:

> Sr Nilton, valeu mais naum consegui entender c vc puder simplificar
> mais para mim eu agradeço. O SO é Windows...ai agora fica mais
> facil. Eu procurei sobre o assunto no google mais não encontrei!

Já que você está usando windows é só usar o primeiro método.

Coloque:

import msvcrt

no início do seu programa. E depois em algum momento, imagino eu, você
deva estar usando raw_input() para ler a opção escolhida no menu. Daí
é só trocar:

opcao = raw_input()

por

opcao = msvcrt.getch()

Mas note que essa função só lê um caractere da entrada e já retorna.

Se mesmo assim ainda estiver complicado, sugiro que você continue
usando o método mais simples até se familiarizar e se sentir mais
confortável com os conceitos de programação.

Abraço,
-- Nilton

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

soldadomecatronico

unread,
Jul 31, 2007, 11:34:19 AM7/31/07
to python...@yahoogrupos.com.br

Nilton,
eu entedi sim, obrigado pela ajuda...só estou com um probleminha.
quais são os números que escrevo dentro dos (). Eu sei que
opcao = msvcrt(13) é = tecla return/ENTER, (27) é = tecla escape/ESC.
eu gostaria de saber quais são as outras teclas eu não sei os
números. Se você poder me passar os números de cada tecla...!
ja agradecido, Esdras.



--- Em python-brasil@yahoogrupos.com.br, "Nilton Volpato"
<nilton.volpato@...> escreveu
>

> Esdras,

> > <nilton.volpato@> escreveu

Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

soldadomecatronico

unread,
Jul 31, 2007, 11:43:27 AM7/31/07
to python...@yahoogrupos.com.br

Nilton,
eu entendi sim, veja os pontos em *.

ai vai o código q estou usando:

import msvcrt
print 'use as telcas F9, ENTER e ESC'
print 'aperte esc para sair'
a=0
while 1:
char = msvcrt.getch()
if char == chr(27):
print '27 = voce apertou a tecla escape/ESC'
break
if char == chr(13):
print '13 = voce apertou a tecla ENTER/return'
if char == chr(0):
print '0 = voce apertou alguma tecla de F1 a F10'
em if char == *chr()*
*chr() dentro destas deve conter um numero como no código acima.
é sobre esses números que estou em dúvida...quais são e que teclas
elas representão.

ja agradecido, Esdras.



--- Em python-brasil@yahoogrupos.com.br, "Nilton Volpato"
<nilton.volpato@...> escreveu
>

> Esdras,

> > <nilton.volpato@> escreveu

Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Fabiano Bialecki

unread,
Jul 31, 2007, 3:08:16 PM7/31/07
to python...@yahoogrupos.com.br

> Se você poder me passar os números de cada tecla...!

__._,_.___
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia:              |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar  |
| E se você é usuário do BOL lembre-se de cadastrar o       |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´
Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___

Nilton Volpato

unread,
Jul 31, 2007, 7:37:57 PM7/31/07
to python...@yahoogrupos.com.br

Esdras,

Você deveria fazer assim:

import msvcrt

while 1:
print '--- Menu ---'
print '1 - Alguma coisa'
print '2 - Outra coisa'
print '3 - Sair'
op = msvcrt.getch()
if op == '1':
print 'Voce escolheu alguma coisa'
elif op == '2':
print 'Voce escolheu outra coisa'
elif op == '3':
print 'Até logo'
break
else:
print 'Opção desconhecida'

Dicas:
* Você pode^H^H^H^H deve usar o interpretador interativo do python e
fazer alguns testes lá para ver como funciona. Teste a função
msvcrt.getch(), e outras idéias que você quiser experimentar.
Aproveite-o, pois nem toda linguagem tem a vantagem de possuir um
interpretador interativo! Já dá para resolver a maioria dos problemas
só usando ele.

* Recomendo seguir um dos vários tutoriais disponíveis do começo ao
fim em detalhes. No final você vai possuir uma base para poder fazer
muito mais (e melhor) do que agora. Escolha um tutorial aqui [1].
Muitos gostam desse [2] do Luciano Ramalho.

* É normal ter dúvidas sobre cada detalhe quando se está começando a
programar. A melhor maneira de aprender com isso é aprendendo sozinho
como resolver os problemas, utilizando boas referências,
experimentando (veja a dica anterior) e olhando na documentação (a
documentação oficial já é muito boa [3] e [4]). Pois chega um momento
em que não adianta perguntar, pois ninguém vai saber responder aquela
sua dúvida. Nesse momento você vai estar no estado-da-arte daquele
específico ramo do conhecimento e vai precisar descobrir como ou o que
fazer sozinho.

[1] http://www.pythonbrasil.com.br/moin.cgi/DocumentacaoPython
[2] http://www.pythonbrasil.com.br/moin.cgi/AprendaProgramar
[3] http://docs.python.org/lib/lib.html
[4] http://effbot.org/librarybook/ (outra referência para a biblioteca
padrão, com exemplos)

Abraço,
-- Nilton

Atividade nos últimos dias
Visite seu Grupo
Yahoo! Mail

Conecte-se ao mundo

Proteção anti-spam

Muito mais espaço

Yahoo! Barra

Instale grátis

Buscar sites na web

Checar seus e-mails .

Yahoo! Grupos

Crie seu próprio grupo

A melhor forma de comunicação

.

__,_._,___
Reply all
Reply to author
Forward
0 new messages