kivy виджет Удалить или редактировать через ID - PullRequest
0 голосов
/ 08 февраля 2020

Я хочу удалить виджеты с помощью идентификатора 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

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

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