Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在Kivy应用程序python中添加更多复选框?_Android_Python_Checkbox_Kivy - Fatal编程技术网

Android 如何在Kivy应用程序python中添加更多复选框?

Android 如何在Kivy应用程序python中添加更多复选框?,android,python,checkbox,kivy,Android,Python,Checkbox,Kivy,我正在做一个关于Kivy应用程序的项目,我有一些问题。第一个问题是在主屏幕上添加更多复选框。目前,主屏幕有4个复选框,其中1个复选框标签,我需要有13个复选框。当我尝试添加kivy应用程序无法运行的相同代码时,我不知道为什么,这非常奇怪。程序代码为: # -*- coding: utf-8 -*- from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenMana

我正在做一个关于Kivy应用程序的项目,我有一些问题。第一个问题是在主屏幕上添加更多复选框。目前,主屏幕有4个复选框,其中1个复选框标签,我需要有13个复选框。当我尝试添加kivy应用程序无法运行的相同代码时,我不知道为什么,这非常奇怪。程序代码为:

# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.properties import DictProperty

Builder.load_string('''
<Root>:
    MainScreen:
        name: 'main'
    AnotherScreen:
        name: 'another'

<MainScreen>:
    GridLayout:
        cols: 2
        Label:
            text: "Select Subjects"
            font_size: 15
        Label:
            text: " "
        CheckBox:
            on_active:root.ping('240031',self.active)
        Label:
            text: "Electromagnetisme"
        CheckBox:
            on_active:root.ping('240033',self.active)
        Label:
            text: "Materials"
        CheckBox:
            on_active:root.ping('240052',self.active)
        Label:
            text: "Termodinàmica"
        CheckBox:
            on_active:root.ping('240053',self.active)
        Label:
            text: "Electrotècnia"
        Button:
            text: "Exit"
            background_color: .7, .7, 6, 1
            on_release:root.parent.current='another'
        Button:
            text: "Run"
            font_size: 24
            background_color: .7, .7, 1, 1
            on_release: root.parent.current='another'

<AnotherScreen>:
    GridLayout:
        id: container
        cols: 2

''')


class MainScreen(Screen):
    def __init__(self, **kw):
        super(MainScreen, self).__init__(**kw)
        self.a = App.get_running_app()
        self.e={}
    def ping(self, n, value):
         self.a.big_dict[n] = value

class AnotherScreen(Screen):
    def on_pre_enter(self, *args):
        i={'240031':A,'240033':B,'240052':C,'240053':D}
        t=[]        
        a = App.get_running_app()
        self.ids.container.add_widget(Button(text='Assignatura',background_color=[0,1,1,1]))
        self.ids.container.add_widget(Button(background_color=[0,1,1,1],text='Escriu Grup'))
        for k,v in a.big_dict.iteritems():
            if v:
                self.ids.container.add_widget(Label(text=k+' '+i[k].encode("utf-8")))
                self.k=TextInput(multiline=False)
                t.append(self.k.text)
                self.ids.container.add_widget(self.k)
        def run(self):
            print t
        b1=Button(text='Exit',background_color=[0,1,0,1])
        self.ids.container.add_widget(b1)
        b2=Button(text='Run',background_color=[0,1,0,1])
        self.ids.container.add_widget(b2)
        b1.bind(on_press=exit)
        b2.bind(on_release=run)

class Root(ScreenManager):
     pass
class SimpleKivy(App):
    big_dict = DictProperty({'240031':False,'240033':False,'240052':False,'240053':False})
    def build(self):
        return Root()
SimpleKivy().run()
#-*-编码:utf-8-*-
从kivy.app导入应用程序
从kivy.lang导入生成器
从kivy.uix.screenmanager导入screenmanager,屏幕
从kivy.uix.textinput导入textinput
从kivy.uix.label导入标签
从kivy.uix.gridlayout导入gridlayout
从kivy.uix.button导入按钮
从kivy.properties导入属性
Builder.load_字符串(“”)
:
主屏幕:
名称:'main'
另一屏幕:
名字:“另一个”
:
网格布局:
科尔斯:2
标签:
文本:“选择主题”
字体大小:15
标签:
案文:“”
复选框:
on_active:root.ping('240031',self.active)
标签:
正文:“电磁学”
复选框:
on_active:root.ping('240033',self.active)
标签:
正文:“材料”
复选框:
on_active:root.ping('240052',self.active)
标签:
案文:“Termodinámica”
复选框:
on_active:root.ping('240053',self.active)
标签:
正文:“电子计算机”
按钮:
正文:“退出”
背景颜色:.7,7,6,1
发布时:root.parent.current='other'
按钮:
文本:“运行”
字体大小:24
背景颜色:.7、.7、1、1
发布时:root.parent.current='other'
:
网格布局:
id:集装箱
科尔斯:2
''')
类主屏幕(屏幕):
def初始功率(自身功率,**kw):
超级(主屏幕,自)
self.a=App.get_running_App()
self.e={}
def ping(自身、n、值):
self.a.big_dict[n]=值
另一类屏幕(屏幕):
def on_pre_enter(自身,*参数):
i={'240031':A,'240033':B,'240052':C,'240053':D}
t=[]
a=App.get_running_App()
self.ids.container.add_小部件(按钮(text='Assignatura',background_color=[0,1,1,1]))
self.ids.container.add_小部件(按钮(背景颜色=[0,1,1,1],text='Escriu Grup'))
对于a.big_dict.iteritems()中的k,v:
如果v:
self.ids.container.add_小部件(标签(text=k+''+i[k].encode(“utf-8”))
self.k=TextInput(多行=False)
t、 附加(self.k.text)
self.ids.container.add_小部件(self.k)
def运行(自):
打印t
b1=按钮(文本='退出',背景色=[0,1,0,1])
self.ids.container.add_小部件(b1)
b2=按钮(文本='Run',背景色=[0,1,0,1])
self.ids.container.add_小部件(b2)
b1.绑定(按下=退出)
b2.绑定(发布时=运行)
类根(屏幕管理器):
通过
SimpleKivy类(应用程序):
big_dict=DictProperty({'240031':False,'240033':False,'240052':False,'240053':False})
def生成(自):
返回根()
SimpleKivy().run()

这是钻孔代码。在第二个屏幕中,用户可以选择一些字段并将文本输入保存在变量
t
中,在python屏幕中打印结果。如果有人知道如何在主屏幕中添加更多复选框,这将非常有帮助。

每个问题最好只关注一个问题,请参阅。此外,如果我们无法访问您的代码(例如模块
filtro
),那么提到它也没有意义。最好对代码进行结构化,以便我们可以按原样运行它。我一直在filtro中工作,因此我决定只打印我需要的变量(
t
)的结果。当您将
text
值附加到
t
时,这些值在创建时为空。你需要对文本的变化做出反应。或者,如果要在单击
b2
时对输入进行操作,请在
run
中收集
文本
。单击run时,我如何无法收集所有文本?我试图用
self.k.bind(on_text=add)
保存每一个文本(
add
是一个函数,它可以将每一个更改保存到列表中),但不起作用,因为bind会添加每一个更改,例如,如果我输入'12',bind将保存'1'和'12'。您知道如何收集最终文本吗?在创建时将文本输入存储在ListProperty中,然后在运行时遍历列表并收集文本