Есть ли способ уничтожить метку функции из одного класса в другой в tkinter?

#python #html #tkinter

Вопрос:

Я пытаюсь создать приложение для викторины с помощью tkinter. Я столкнулся с проблемой. Кто-нибудь может мне помочь, пожалуйста

 def incorrect(self):
        
    global lb
        
    lb=Label(self.root, text="Incorrect",font='50',height='1')

    lb.place(x=300,y=480)

def qn2(self):

     global l2,bc,bs,bp,bne,total,l,lb

     l1.destroy()

     bg.destroy()

     bv.destroy()

     bf.destroy()

     bn.destroy()

     l.destroy()

     lb.destroy() 

 

Ошибка:

 lb.destroy()

NameError: name 'lb' is not defined
 

Кто-нибудь может мне помочь, пожалуйста. Спасибо!

Комментарии:

1. Если вы используете класс, почему бы вам не сделать self.lb это вместо того, чтобы делать его глобальным

2. если я это сделаю, появится ошибка типа : self.lb.destroy() Ошибка атрибута: объект «Вопросы» не имеет атрибута «lb»

3. ты должен self.lb=Label(..) это сделать . Сделайте его частью класса, чтобы его можно было использовать в любом месте

4. Просто потому, что вы пишете global x внутри функции x , глобальная переменная не существует. Он говорит только Python: » x внутри этой функции означает глобальное x , если таковое имеется, а не что-либо локальное». Аналогичная вещь происходит с атрибутами класса; вы можете это сделать, только self.lb.destroy() если что-то присвоило значение self.lb раньше. В любом случае, вам нужно подумать о том, что произойдет, если incorrect не позвонить раньше qn2 .

5. Вот как это было сделано, и это показало,что ошибка self.lb=Метка(self.root,текст=»Неверно», шрифт=’50’, высота=’1′) self.lb.место(x=300, y=480)

Ответ №1:

Привет, вы можете определить ld и l вне функции def, и это будет работать нормально

 You can make code bocks with this ```
 

Подобный этому

 def incorrect():
        
    global lb
        
    lb.place(x=300,y=480)

def qn2():

     global l2,bc,bs,bp,bne,total,l,lb

     l1.destroy()

     bg.destroy()

     bv.destroy()

     bf.destroy()

     bn.destroy()

     l.destroy()

     lb.destroy() 
lb=Label(self.root, text="Incorrect",font='50',height='1')


 

Вы можете удалить себя

Комментарии:

1. Вы можете разместить метки, вызвав функцию позже

2. Да! Я пытался, но все равно это не работает

3. Это Label

4. Здесь много ошибок. Это def не Def так , функция определяется как lableplacer() , но вызывается как Lableplacer()

5. эй, это действительно сработало! спасибо @new_to_code и спасибо всем