добавление нескольких кнопок во всплывающем окне - PullRequest
0 голосов
/ 01 июля 2019

я создал всплывающее окно.обычно мы используем pop.dismiss, чтобы закрыть всплывающее окно.но я хочу добавить несколько кнопок в этом всплывающем окне.У меня есть 4 кнопки.при нажатии 2 из этих кнопок они должны показать другой виджет (boxlayout).но когда я касаюсь этих кнопок, приложение вылетает.

, но другие 2 из этих 4 кнопок, когда их касаются, показывают другое всплывающее окно.это работает хорошо.без сбоев

1) из всплывающего окна> прикосновение к кнопке> показ другого всплывающего окна> без сбоев

2) из ​​всплывающего окна> коснитесь следующих 2 кнопок>, чтобы отобразить виджет boxlayout> приложение упало!

Может кто-нибудь объяснить это?как мне это исправить?

код питона

class abc(Popup):   

    def about_app(self):
        self.clear_widgets()
        self.add_widget(about())    

    def about_leo(self):
        self.clear_widgets()
        self.add_widget(page1())

    def help(self):
        pops=help_popup()
        pops.open() 

    def website(self):
        pops=website()
        pops.open()

код kv

<abc>:  
    title: 'LEO CLUB'
    title_color: 1, 0, 0, 1 
    title_size: 50
    title_align:'center'
    background: 'popup.png'
    size_hint: .6, 0.8
    pos_hint: {'right': .6, 'top': 1}

    BoxLayout:          
        BoxLayout:
            orientation:'vertical'                      

            Button:
                bold: True
                text: "About LEO"
                background_color: 0, 0, 0, 0
                on_release: root.about_leo()
            Button:
                bold:True
                text: "About App"
                background_color: 0, 0, 0, 0
                on_release: root.about_app()                                                 
            Button:
                bold: True
                text: "Website"
                background_color: 0, 0, 0, 0
                on_release: root.website()
            Button:
                bold: True
                text: "Help"
                background_color: 0, 0, 0, 0
                on_release: root.help()

1 Ответ

0 голосов
/ 02 июля 2019

Ваш код вызывает self.add_widget() в классе abc (это Popup), но у Popup может быть только один ребенок (это content).Вызов clear_widgets() удаляет все дочерние элементы Popup, но не изменяет свойство content (вероятно, так и должно быть).Таким образом, даже если вы удалили children из Popup, он все еще думает, что у него есть непустой content.Итак, что вам действительно нужно сделать, это просто установить новый content.В вашем классе abc просто замените эти два метода на:

def about_app(self):
    self.content = about()

def about_leo(self):
    self.content = page1()
...