Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Подскажите, как удалить Label в Tkinter? [RSS Feed]

#1 Янв. 14, 2017 17:22:51

Franek
От: Беларусь
Зарегистрирован: 2016-05-09
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

Python 3.5, Tkinter.
Подскажите, пожалуйста. Когда на метке (Label) появляется текстовая надпись 2-ой раз, то она накладывается на предыдущую надпись. Как очистить метку?
В Викиверситете ответа не нашёл.

 #  Создание программы для изучения английских непр. глаголов
from tkinter import *
class Application(Frame):
    spis = [("воровать", "steal", "stole", "stolen"),
            ("кусать", "bite", "bit", "bitten"),
            ("делать", "do", "did", "done")]
    i = 0
    j = 0
    def __init__(self, master):
        super(Application, self).__init__(master)
        self.grid()
        self.create_widgets()
    def create_widgets(self):
        cort = self.spis[self.j]
        lbl = Label(text=cort[0], fg="green", font='arial 14')
        lbl.grid(row=0, column=2)
        btn = Button(width=15, text="перевод", command=self.transl)
        btn.grid()
    def transl(self):
        cort = self.spis[self.j]
        ruslbl = Label(text=cort[0], fg="green", font='arial 14')  # Russian word
        ruslbl.grid(row=0, column=1, columnspan=3)
        self.i += 1
        englbl = Label(text=cort[self.i], font='arial 15')              # English word
        englbl.grid(row=self.i+1, column=1, columnspan=3)
        if self.i == 3:
            self.i = 0
            self.j += 1
root = Tk()
root.title("Программа изучения английских слов")
root.geometry("400x150")
app = Application(root)
root.mainloop() 

Отредактировано Franek (Янв. 14, 2017 17:41:41)

Офлайн

#2 Янв. 14, 2017 17:48:01

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

Не создавать новый лейб, а просто в старом поменять свойство text

 label["text"] = "new text"

Отредактировано 4kpt_IV (Янв. 14, 2017 17:48:34)

Офлайн

#3 Янв. 14, 2017 18:24:05

Franek
От: Беларусь
Зарегистрирован: 2016-05-09
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

4kpt_IV
Спасибо!! Думал никак не решу.

 #  Создание программы для изучения английских непр. глаголов
from tkinter import *
class Application(Frame):
    spis = [("воровать", "steal", "stole", "stolen"),
            ("кусать", "bite", "bit", "bitten"),
            ("делать", "do", "did", "done")]
    i = 0
    j = 0
    def __init__(self, master):
        super(Application, self).__init__(master)
        self.grid()
        self.create_widgets()
    def create_widgets(self):
        cort = self.spis[self.j]
        ruslbl = Label(text=cort[0], fg="green", font='arial 14')  # Russian word
        self.ruslbl = ruslbl
        ruslbl.grid(row=0, column=2)
        englbl = Label(text=cort[self.i+1], font='arial 15')         # English word
        self.englbl = englbl
        englbl.grid(row=self.i + 1, column=1, columnspan=3)
        btn = Button(width=15, text="перевод", command=self.transl)
        btn.grid()
    def transl(self):
        self.i += 1
        cort = self.spis[self.j]
        self.ruslbl["text"] = cort[0]
        self.englbl["text"] = cort[self.i]
        if self.i == 3:
            self.i = 0
            self.j += 1
root = Tk()
root.title("Программа изучения английских слов")
root.geometry("400x150")
app = Application(root)
root.mainloop() 

Офлайн

#4 Янв. 16, 2017 09:37:46

Franek
От: Беларусь
Зарегистрирован: 2016-05-09
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

4kpt_IV
Почему текст на лейбе появляется строго в одной строке? Упаковщик grid работает когда нажимаешь кнопку Button, в нём расположение строк должны меняться (переменная i). Но текст размещается строго в одной строке.
Полный текст проги:

 from tkinter import *
class Application(Frame):
    spis = [("воровать", "steal", "stole", "stolen"),
            ("кусать", "bite", "bit", "bitten"),
            ("делать", "do", "did", "done")]
    i = 0
    j = 0
    def __init__(self, master):
        super(Application, self).__init__(master)
        self.grid()
        self.create_widgets()
    def create_widgets(self):
        cort = self.spis[self.j]
        ruslbl = Label(text=cort[0], fg="green", font='arial 14')  # Russian word
        self.ruslbl = ruslbl
        ruslbl.grid(row=0, column=3)
        englbl = Label(font='arial 15')                            # English word
        self.englbl = englbl
        btn = Button(width=15, text="перевод", command=self.transl)
        btn.grid(column=2)
    def transl(self):
        self.i += 1
        print("i = ", self.i)
        cort = self.spis[self.j]
        self.ruslbl["text"] = cort[0]
        self.englbl["text"] = cort[self.i]
        self.englbl.grid(row=self.i + 1, column=2)
        if self.i == 3:
            self.j += 1
            print("j = ", self.j)
            self.i = 0
root = Tk()
root.title("Программа изучения английских слов")
root.geometry("400x150")
app = Application(root)
root.mainloop() 

Офлайн

#5 Янв. 16, 2017 11:04:37

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

Давайте так. Что Вы хотите сделать? Вы меняете grid для действующего label и он должен куда-то передвинуться?

Офлайн

#6 Янв. 16, 2017 11:18:54

Franek
От: Беларусь
Зарегистрирован: 2016-05-09
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

4kpt_IV
Я хочу чтобы виджет self.englbl при первом клике на кнопку Button располагался в 1-ом ряду, при втором клике - во 2-ом… Номер ряда содержит переменная i, которая меняется, но расположение ряда - не меняется. Я не знаю почему.

Отредактировано Franek (Янв. 16, 2017 11:19:26)

Офлайн

#7 Янв. 16, 2017 11:20:52

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

А что становится на место этого label?

Офлайн

#8 Янв. 16, 2017 11:27:34

Franek
От: Беларусь
Зарегистрирован: 2016-05-09
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

4kpt_IV
Для этого нужно создавать каждый раз новый лейб, наверное. Но тогда при втором клике мышкой новый текст будет накладываться на старый (как у меня получилось в самом первом сообщении этого поста).

Офлайн

#9 Янв. 16, 2017 11:36:09

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

Даже при упаковке его новым grid?

Офлайн

#10 Янв. 16, 2017 11:42:14

Franek
От: Беларусь
Зарегистрирован: 2016-05-09
Сообщения: 66
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите, как удалить Label в Tkinter?

4kpt_IV
Да, для виджета englbl каждый раз (при клике кнопки) создаётся новый лейб и упаковывается новым grid.

 #  Создание программы для изучения английских непр. глаголов
from tkinter import *
class Application(Frame):
    spis = [("воровать", "steal", "stole", "stolen"),
            ("кусать", "bite", "bit", "bitten"),
            ("делать", "do", "did", "done")]
    i = 0
    j = 0
    def __init__(self, master):
        super(Application, self).__init__(master)
        self.grid()
        self.create_widgets()
    def create_widgets(self):
        cort = self.spis[self.j]
        lbl = Label(text=cort[0], fg="green", font='arial 14')
        lbl.grid(row=0, column=2)
        btn = Button(width=15, text="перевод", command=self.transl)
        btn.grid()
    def transl(self):
        cort = self.spis[self.j]
        ruslbl = Label(text=cort[0], fg="green", font='arial 14')  # Russian word
        ruslbl.grid(row=0, column=1, columnspan=3)
        self.i += 1
        englbl = Label(text=cort[self.i], font='arial 15')              # English word
        englbl.grid(row=self.i+1, column=1, columnspan=3)
        if self.i == 3:
            self.i = 0
            self.j += 1
root = Tk()
root.title("Программа изучения английских слов")
root.geometry("400x150")
app = Application(root)
root.mainloop() 

Офлайн

  • Начало
  • » GUI
  • » Подскажите, как удалить Label в Tkinter?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version