• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Tharis

[Ajuda] Bloquear Botão

6 mensagens neste tópico

Mais uma vez venho-vos pedir ajuda, mas, só assim é que vou aprender!

Alguém me sabe dizer como é que a determinada altura, se bloqueia um botão em Tkinter.

Quando digo bloquear, quer dizer que ele está e aparece mas não é possível clicar nele!

Cumps

tharis20

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na função que ele executa no click, fazes um return caso a condição se verifique.

Exemplo:

if modo == "desactivado":
    return

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

from Tkinter import *

modo = "activo"

class MyApp:
    def __init__(self, parent):
        self.myParent = parent ### (7) lembra seu 

mestre, a raiz
        self.myContainer1 = Frame(parent)
        self.myContainer1.pack()

        self.button1 = Button(self.myContainer1)
        self.button1.configure(text="OK", background= 

"green")
        self.button1.pack(side=LEFT)
        self.button1.bind("<Button-1>", 

self.button1Click) ### (1)

        self.button2 = Button(self.myContainer1)
        self.button2.configure(text="Cancel", 

background="red")
        self.button2.pack(side=RIGHT)
        self.button2.bind("<Button-1>", 

self.button2Click) ### (2)
        
    def button1Click(self, event): ### (3)
        modo = "desactivado"

        if modo == "desactivado":
            return
            
        else:
            modo = "activo"
            
    def button2Click(self, event): ### (5)
        self.myParent.destroy() ### (6)
    
root = Tk()
myapp = MyApp(root)
root.mainloop()

Fiz assim e não resultou. :P

HELP!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fizeste isso mal...

from Tkinter import *

modo = "activo"

class MyApp:
    def __init__(self, parent):
        self.myParent = parent ### (7) lembra seu mestre, a raiz
        self.myContainer1 = Frame(parent)
        self.myContainer1.pack()

        self.button1 = Button(self.myContainer1)
        self.button1.configure(text="OK", background= "green")
        self.button1.pack(side=LEFT)
        self.button1.bind("<Button-1>", self.button1Click) ### (1)

        self.button2 = Button(self.myContainer1)
        self.button2.configure(text="Cancel", background="red")
        self.button2.pack(side=RIGHT)
        self.button2.bind("<Button-1>", self.button2Click) ### (2)
        
    def button1Click(self, event): ### (3)
        global modo
        if modo == "desactivado":
            return            
        else:
            print "alterar esta linha pelo que queres fazer"
            modo = "desactivado"
            
    def button2Click(self, event): ### (5)
        self.myParent.destroy() ### (6)
    
root = Tk()
myapp = MyApp(root)
root.mainloop()

Something like that. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hummm  :hmm:,

acho que não foi isso que quer saber...

Pelo que pude entender, quer quer isso aqui:

# -*- coding: iso-8859-1 -*-
from Tkinter import *

class Display(Frame):
def __init__(self, master=None):
	Frame.__init__(self, master)
	self.grid()

	self.button1 = Button()
	self.button1.configure(width=20, text="Desativado", activebackground="red", borderwidth="5", command=lambda:self.function2(self), state=DISABLED)
	self.button1.grid(column=0,row=0)

	self.button2 = Button()
	self.button2.configure(width=20, text="Ativado", activebackground="blue", borderwidth="5", command=lambda:self.function1(self), state=NORMAL)
	self.button2.grid(column=1,row=0)

def function1(self, event):
	self.button1.configure(width=20, text="Ativado", state=NORMAL)
	self.button2.configure(width=20, text="Desativado", state=DISABLED)

def function2(self, event):
	self.button1.configure(width=20, text="Desativado", state=DISABLED)
	self.button2.configure(width=20, text="Ativado", state=NORMAL)


root = Tk()
Display(root)
root.title(" Botão - Ativado/Desativado")
root.resizable(height=FALSE,width=FALSE) # não deixa maximizar e nem alterar o frame
root.mainloop()

Correto ?  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Era mesmo isso pá! Mas mesmo assim, agr só serve para enriquecer o meu saber, pq aplicação prática, para já, não tem!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora