Я хочу удалить виджеты с помощью идентификатора kivy.
Я использовал gridlayout, чтобы выводить биты и строки s за строкой.
Затем нажмите Threebutton, чтобы выскочить
Когда Вы нажимаете Threebutton, он сохраняет значение идентификатора Threebutton.
Например, первый сгенерированный a будет иметь идентификатор btn0.
(например: первые три нажатия кнопки -> popup delete щелкните -> 1 макет строки удалить)
Идентификатор бита также будет name0, поэтому, если идентификатор содержит 0, я думал, что он будет удален.
Но я не знаю как удалять виджеты по идентификатору только при нажатии «Удалить» во всплывающем окне.
Мне действительно нужна помощь.
Это может быть полезно.
Учите Киби Ньюб ie
python код:
class Template_Label3(GridLayout):
global last_btn_name
def __init__(self, **kwargs):
super(Template_Label3, self).__init__(**kwargs)
csv_counter = -1
csv_counterr = -1
self.cols = 2
self.row_force_default = True
self.row_default_height = 50
self.orientation = 'horizontal'
with open(templates_path+ department+"1.csv", "r", encoding="cp949", newline="") as inf, open(templates_path+department+"_temp.csv", "w", encoding="cp949", newline="") as outf:
reader = csv.reader(inf)
writer = csv.writer(outf)
for i in reader:
csv_counter += 1
csv_counterr += 1
label = Label(id = 'name%d' %csv_counter,
text=str(i[0]),
font_size = (22.5),
color=(.36, .36, .36, 1),
font_name = './NotoSansCJKkr-hinted/NotoSansCJKkr-Medium.otf',
padding = [37, 0])
label.bind(size=label.setter('text_size'))
self.add_widget(label)
three = ThreeButton(id = 'btn%d' %csv_counter,
size_hint = (0.5, 0.5),
size_hint_x=None,
width=15,
on_press = self.Press_auth)
self.add_widget(three)
label = Label(id = 'contents%d' %csv_counter,
text=str(i[1]),
font_size = (19.5),
color=(.53, .53, .53, 1),
font_name = './NotoSansCJKkr-hinted/NotoSansCJKkr-Regular.otf',
padding = [37, -4])
label.bind(size=label.setter('text_size'))
self.add_widget(label)
label = Label(size_hint_x=None,
width=10)
self.add_widget(label)
image = Image(source = 'wall.png')
self.add_widget(image)
label = Label(size_hint_x=None,
width=10)
self.add_widget(label)
def Press_auth(self, instance):
global last_btn_name
last_btn_name = instance.id
print(instance.ids)
изображение
![image](https://i.stack.imgur.com/6UbEe.png)
class ThreeButton(ButtonBehavior, Image):
global last_btn_name
def __init__(self, **kargs):
super(ThreeButton, self).__init__(**kargs)
self.source = './ic_more_vert@2x.png'
self.bind(on_release=lambda x: self.EditDeleteButton())
always_release = True
def EditDeleteButton(self):
box = BoxLayout(orientation='horizontal', padding=(30))
box.add_widget(Button(text='edit',
font_name='./NotoSansCJKkr-hinted/NotoSansCJKkr-Medium.otf',
color=(0.568, 0.568, 0.568, 1),
font_size=(13 * 1.5),
size_hint=(0.6, 0.35),
background_color=(255, 255, 255, 1)))
popup = Popup(content=box, size_hint=(None, None), size=(233 * 1.5, 187 * 1.5),
separator_height=0, background='./white.png')
box.add_widget(Button(text='delete',
font_name='./NotoSansCJKkr-hinted/NotoSansCJKkr-Medium.otf',
color=(0.568, 0.568, 0.568, 1),
font_size=(13 * 1.5),
size_hint=(50, 0.2),
pos_hint={'x': 20, 'top': -0.3, 'y': 0.3},
background_color=(255, 255, 255, 1),
on_press= self.Press_auth))
popup.open()
![enter image description here](https://i.stack.imgur.com/sAWtr.png)