python - 从单选按钮返回文本
问题描述
我正在尝试仅使用纯 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
- 声明一个类
search_by
属性,StringProperty
类型 - 使用
App.get_running_app()
函数访问应用实例 search_type
用instance.text
inon_active()
方法填充search_by
在搜索/数据库查询功能中使用
片段
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
解决方法如下:
- 创建一个
class CustomCheckBox
继承CheckBox
小部件 - 声明一个类属性
text
,StringProperty
类型 - 实施
on_active
事件 - 在循环内实例
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)
...
推荐阅读
- python - 如何加快在 Pandas 中填写日期的速度?
- c# - 将对象数组添加到另一个类 c#
- git - git fetch 不获取远程分支 - 如何获取所有远程
- excel - vba 运行时错误 91:在范围内查找日期
- html - 如何在 CSS 中调整这些图像的大小?
- continuous-integration - Bitbucket管道中的树稳定计时器?
- sql-server - SSIS 部署的包无法将驱动器标记映射到网络共享文件夹
- python - 使用 Flask API 而不是 render_template
- docker - 使用 Docker 将现有 Prestashop 部署到服务器
- r - R中矩阵的条件和减法