繁体   English   中英

从单选按钮返回文本

[英]Return text from radio buttons

我正在尝试仅使用纯python在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)

问题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. 创建继承自CheckBox小部件的class CustomCheckBox
  2. 声明一个类属性, StringProperty类型的text
  3. 实施on_active事件
  4. for循环内使用group='1'text=text=filters[i]实例化CustomCheckBox

片段

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)
        ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM