Возврат текста из переключателей - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь создать панель поиска в kivy только с чистым питоном. Есть ли способ вернуть определенную строку в функцию, выбрав переключатель

Это небольшой фрагмент моей программы. Было бы полезно, если бы вы могли ответить, используя чистые коды Python

class avbl_bk(Screen):
    def __init__(self,**kwargs):
        super(avbl_bk,self).__init__(**kwargs)
        blayout=BoxLayout(orientation="vertical")
        check=BoxLayout()
        search_layout=BoxLayout(spacing=10,padding=5)
        search_label=Label(text="Search: ",size_hint_x=0.5)
        search_box=TextInput(multiline=False,font_size=40,size_hint_x=0.8)
        search=Button(text="Search",size_hint=(.3,0.8))
        chk1=CheckBox(group='1')
        chk2=CheckBox(group='1')
        chk3=CheckBox(group='1')
        chk4=CheckBox(group='1')
        chk5=CheckBox(group='1')
        chk6=CheckBox(group='1')
        filters=["ISBN","Book","Genre","Author","Publisher","Copies"]
        for i in range(6):
            check.add_widget(Label(text=filters[i]))
            check.add_widget(eval(("chk"+str(i+1))))
        search_layout.add_widget(search_label)
        search_layout.add_widget(search_box)
        search_layout.add_widget(check)
        search_layout.add_widget(search)
        blayout.add_widget(search_layout)
        self.add_widget(blayout)

1 Ответ

0 голосов
/ 29 июня 2019

Проблема 2 - Передать текст выбранной радиокнопки кнопке поиска

Я хотел использовать строку для выполнения запроса в моей базе данных и отображать ее при нажатии кнопки поиска.Как мне тогда это сделать?

Решение 2

Фрагменты

class CustomCheckBox(CheckBox):
    text = StringProperty('')

    def on_active(self, instance, value):
        if value:
            print(f'\tThe checkbox text={instance.text} is active')
            App.get_running_app().root.search_by = instance.text


class avbl_bk(Screen):
    search_by = StringProperty('')

    def __init__(self, **kwargs):
        super(avbl_bk, self).__init__(**kwargs)
        ...

Проблема 1 - Возврат текста с переключателей

Есть ли способвернуть определенную строку в функцию из выбора переключателя

Решение 1

Решение заключается в следующем:

  1. Создать class CustomCheckBoxс наследованием CheckBox виджет
  2. Объявление атрибута класса, text из StringProperty тип
  3. Реализация on_active событие
  4. Создание экземпляра CustomCheckBox с group='1' и text=text=filters[i] внутри for петли

Фрагменты

class CustomCheckBox(CheckBox):
    text = StringProperty('')

    def on_active(self, instance, value):
        if value:
            print(f'\tThe checkbox text={instance.text} is active')


class avbl_bk(Screen):
    def __init__(self, **kwargs):
        super(avbl_bk, self).__init__(**kwargs)
        ...
        search = Button(text="Search", size_hint=(.3, 0.8))

        filters = ["ISBN", "Book", "Genre", "Author", "Publisher", "Copies"]
        for i in range(6):
            check.add_widget(Label(text=filters[i]))
            check.add_widget(CustomCheckBox(group='1', text=filters[i]))

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