Ir para conteúdo
Fórum Script Brasil
  • 0

Tkinter: Botão não volta


Marcelo Montilla

Pergunta

O problema é: Quando aciono (click) o botão o sistema executa as funções, mas não retorna a posição original dando a impressão de estar sempre pressionado.
Segue o código que reflete o problema.

Já tentei gui.update_idletasks() e reinstalar o Python e usá-lo em outra verão do sistema operacional.

Agradeço a ajuda

figura

pergunta.png.a44fd334c9da7a8ad5bd100bfa531f05.png

https://i.stack.imgur.com/IZwLC.png

```
#! encoding: utf-8

# Bibliotecas python
import os
import platform
import sys

# A linha abaixo captura a versão do python que esta rodando 
# valor esperado 2 ou 3 para ajuste das bibliotecas
PY_VER = sys.version_info[0]

import shutil
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox

def btn_Adicionar_clicar(self):
    adicionar_item_diretorio(DIR_PRJ)

def adicionar_item_diretorio(diretorio):
    # Arquivo de origem.
    resposta = filedialog.askopenfilenames(
        title = "Selecione o arquivo a copiar.")
    ent_arq.insert(END, resposta[0])
    # Atualiza gui em processos lentos.
    gui.update_idletasks()

# Diretório aplicativo.
DIR_PRJ = os.path.dirname(__file__)

# Gerenciador de Janelas.
gui = Tk()

# Tamanho da janela.
# padrão Brasil 1360 x 768 pixels.
width = 320  # 1360
height = 210

geometria = str(width) + 'x' + str(height) + '+'
geometria += str(int((gui.winfo_screenwidth()-width)/2)) + '+'
geometria += str(int((gui.winfo_screenheight()-height)/2) - 40)

# Posicionando a janela.
gui.geometry(geometria)

# Caixa de arquivos.
lbl_arq = Label(gui, text="Arquivo")
lbl_arq.place(x=5, y=5)

ent_arq = Entry(gui)
ent_arq.place(x=55, y=5, width=256, height=20)

# Botoes x0=5, x1=8, h=20, w=60
btn_Adicionar = Button(gui, text='Adicionar')
btn_Adicionar.place(x=10, y=180, height=20, width=60)

# Aplicando ações aos botões
btn_Adicionar.bind('<Button>',  btn_Adicionar_clicar)
```
Muito obrigado!

Editado por Marcelo Montilla
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Continuando minhas pesquisas descobri a forma correta de fazer a chamada da rotina, fica aqui a solução.

Modificar a construção do botão.

btn_Adicionar = Button(gui, text='Adicionar')

btn_Adicionar = Button(gui, text='Adicionar', command=btn_Adicionar_clicar)

Remover a clausula bind.

# Aplicando ações aos botões
btn_Adicionar.bind('<Button>',  btn_Adicionar_clicar)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...