Удалить / создать метки, используя цикл For в tkinter - PullRequest
0 голосов
/ 15 марта 2019

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

Я использую python 3.7.2 :

import tkinter as tk
from tkinter import ttk
master = tk.Tk()

class job():
    def fun(self,eventObject):
        print(self.box_value.get())
        dimensions = ['ab', 'bc','cd','de']
        self.labl.destroy()
        z = 20
        for i in range(len(dimensions)):
            self.labl = tk.Label(master, text=dimensions[i])
            self.labl.place(x=z, y=20)
            z = z + 130
    def __init__(self):
        self.box_value=tk.StringVar()
        self.combo = ttk.Combobox(master, textvariable=self.box_value, state='readonly')
        self.combo['values'] = ['Cd', 'Ale']
        self.combo.bind("<<ComboboxSelected>>", self.fun)
        self.combo.current(1)
        self.combo.place(x=80,y=100)

a=job()

master.mainloop()

AttributeError: объект 'job' не имеет атрибута'labl'

1 Ответ

1 голос
/ 15 марта 2019

Я справился сам, раньше я не мог найти логику для этого. Но сейчас у меня все хорошо, выкладываю ответ для будущего ref:

import tkinter as tk
from tkinter import ttk
master = tk.Tk()

class job():
    def fun(self,eventObject):
        dimensions = ['gdgd','dfddf','bgsdg']
        try:
            if self.check == 1:
                for i in self.labels:
                    i.destroy()
        except:
            pass
        z = 20
        self.labels=[]
        for i in range(len(dimensions)):
            self.labl = tk.Label(master, text=dimensions[i])
            self.labl.place(x=z, y=20)
            self.labels.append(self.labl)
            z = z + 130
    self.check = 1
def __init__(self):
    self.box_value=tk.StringVar()
    self.combo = ttk.Combobox(master, textvariable=self.box_value, state='readonly')
    self.combo['values'] = ['ab', 'bc', 'cd']
    self.combo.bind("<<ComboboxSelected>>", self.fun)
    self.combo.current(1)
    self.combo.place(x=80,y=100)

a=job()

master.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...