我想做什么:
我希望按钮Confirmar
在单击后消失,因此我将其重定向到函数dConfirm
,该函数应该触发销毁过程。你知道吗
发生了什么:
按钮是在与销毁过程不同的函数中定义的,因此它返回一个未定义错误。你知道吗
我的代码:
def dSim():
btn3=Button(janela, text= "Hipertensao arterial", command = add1)
btn3.place(x = 80, y = 219)
btn4=Button(janela, text= "Pedras nos rins", command = add2)
btn4.place(x = 200, y = 219)
btn5=Button(janela, text= "Osteoporose", command = add3)
btn5.place(x = 295, y = 219)
btn6=Button(janela, text= "Colesterol elevado", command = add4)
btn6.place(x = 378, y = 219)
btn7=Button(janela, text= "Esclerose multipla", command = add5)
btn7.place(x = 492, y = 219)
btn.destroy()
btn2.destroy()
lb7=Label(janela, text= "Selecione as suas doencas:", font = ("Verdana", "14"))
lb7.place(x = 185, y = 190)
btn8=Button(janela, text= "Confirmar", command = dConfirm)
btn8.place(x = 80, y = 240)
def dNao():
lb5=Label(janela, text=Gperf, font = ("Verdana", "14"))
lb5.place(x = 80, y = 165)
btn.destroy()
btn2.destroy()
lb6=Label(janela, text="E perfeitamente saudavel, otimo!", font = ("Verdana", "14"))
lb6.place(x = 185, y = 190)
def dConfirm():
btn8.destroy()
您有三种选择:
btn8
是一个局部变量,因此不能在其范围之外引用它。您可以使其成为全局的。不要直接调用
dConfirm()
,而是使用lambda
将按钮实例传递给它,如下所示:btn8 = Button(janela, text="Confirmar", command=lambda: dConfirm(btn8))
并将函数定义更改为def dConfirm(btn8):
(如果您不想移动到选项3并修改代码,我更希望这样做)如果您使用的是类,请使用
self.btn8
将其作为类的实例,然后使用self.btn8.destroy()
将其销毁。#1您可以尝试以下方法:
#2你也可以试试这个(我认为这样更好):
相关问题 更多 >
编程相关推荐