Jump to content
Fórum Script Brasil
  • 0

Tkinter: Botão não volta


Question

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!

Edited by Marcelo Montilla
Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148907
    • Total Posts
      645002
×
×
  • Create New...