Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
如何在kivy python中使用滚动条_Python_User Interface_Scrollview_Kivy - Fatal编程技术网

如何在kivy python中使用滚动条

如何在kivy python中使用滚动条,python,user-interface,scrollview,kivy,Python,User Interface,Scrollview,Kivy,有人能告诉我如何在这段代码中使用滚动条吗?第二,有没有办法将标签和TextInput对齐,使TextInput中的文本无论有多少输入都清晰可见。此处对齐的意思是:如果有100个(数百或数千个)文本输入,则文本输入中的文本应正确可见。实际上,当我在代码中输入一些(间距=50)时,在输入大约20秒后,文本无法正常显示。 提前谢谢 from kivy.app import App from kivy.uix.tabbedpanel import TabbedPanel from kivy.uix.bo

有人能告诉我如何在这段代码中使用滚动条吗?第二,有没有办法将标签和TextInput对齐,使TextInput中的文本无论有多少输入都清晰可见。此处对齐的意思是:如果有100个(数百或数千个)文本输入,则文本输入中的文本应正确可见。实际上,当我在代码中输入一些(间距=50)时,在输入大约20秒后,文本无法正常显示。 提前谢谢

from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
from kivy.uix.textinput import TextInput
from kivy.uix.checkbox import CheckBox
from kivy.lang import Builder

ROWS = ['Goc', 'COC', 'EEE', 'abs' , 'kju' , 'iop' , 'nmg', 'gty', 'jkio', 'dbkgcd' , 'udbcbjkb']

Builder.load_string("""

<Test>:
    do_default_tab: False

    TabbedPanelItem:
        text: 'page1'

        Table:
            padding: 50, 50, 50, 50
            orientation: 'vertical'

<Row>:
    spacing: 50
    size_hint_x: 1
    txt: txtinpt.text
    Label:
        text: root.txt
    TextInput:
        id: txtinpt
        text: root.txt
        disabled: not CheckBox.active
    CheckBox:
        id:CheckBox 
        text: 'CheckBox'
        active: False
    Button:
        text: 'save'

""")
class Table(BoxLayout):
    def __init__(self, **kwargs):
        super(Table, self).__init__(**kwargs)
        for row in ROWS:
            self.add_widget(Row(row))



class Row(BoxLayout):
    txt = StringProperty()
    def __init__(self, row, **kwargs):
        super(Row, self).__init__(**kwargs)
        self.txt = row



class Test(TabbedPanel):
    pass

class MyApp(App):

    def build(self):
        test = Test()
        return test


if __name__ == '__main__':
    MyApp().run()
从kivy.app导入应用
从kivy.uix.tabbedpanel导入tabbedpanel
从kivy.uix.boxlayout导入boxlayout
从kivy.properties导入StringProperty
从kivy.uix.textinput导入textinput
从kivy.uix.checkbox导入复选框
从kivy.lang导入生成器
行=['Goc'、'COC'、'EEE'、'abs'、'kju'、'iop'、'nmg'、'gty'、'jkio'、'dbkgcd'、'udbcbjkb']
生成器。加载\u字符串(“”)
:
do_default_选项卡:False
选项卡式面板项目:
文本:“第1页”
表:
填充:50,50,50,50
方向:“垂直”
:
间距:50
大小提示:1
txt:txtinpt.text
标签:
文本:root.txt
文本输入:
id:txtinpt
文本:root.txt
已禁用:未选中复选框。活动
复选框:
id:复选框
文本:“复选框”
活动:错误
按钮:
文本:“保存”
""")
课程表(BoxLayout):
定义初始(自我,**kwargs):
超级(表,自).\uuuu初始化(**kwargs)
对于行中的行:
self.add_小部件(行)
类行(BoxLayout):
txt=StringProperty()
定义初始值(self,row,**kwargs):
超级(行,自).\uuuu初始值(**kwargs)
self.txt=行
类别测试(选项卡式面板):
通过
类别MyApp(应用程序):
def生成(自):
测试=测试()
回归试验
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
MyApp().run()

以下步骤是:

  • 选项卡面板项中添加
    滚动视图
    ,并将
    表格
    放入其中
  • 使用
    size\u hint\u y=None
    防止boxlayout(
    Table
    )自动调整其高度以适应其父窗口小部件的高度
  • 指定
    高度
  • 代码可以是:

    from kivy.app import App
    from kivy.uix.tabbedpanel import TabbedPanel
    from kivy.uix.boxlayout import BoxLayout
    from kivy.properties import StringProperty
    from kivy.uix.textinput import TextInput
    from kivy.uix.checkbox import CheckBox
    from kivy.lang import Builder
    
    ROWS = ['Goc', 'COC', 'EEE', 'abs' , 'kju' , 'iop' , 'nmg', 'gty', 'jkio', 'dbkgcd' , 'udbcbjkb']
    
    Builder.load_string("""
    
    <Test>:
        do_default_tab: False
    
        TabbedPanelItem:
            text: 'page1'
    
            ScrollView:
                Table:
                    orientation: "vertical"
                    size_hint_y: None
                    height: self.minimum_height
                    padding: 50, 50, 50, 50
    
    
    <Row>:
        spacing: 50
        size_hint_y: None
        size_hint_x: 1
        height: 100
        txt: txtinpt.text
        Label:
            text: root.txt
    
        TextInput:
            id: txtinpt
            text: root.txt
            disabled: not CheckBox.active
        CheckBox:
            id:CheckBox 
            text: 'CheckBox'
            active: False
        Button:
            text: 'save'
    
    """)
    class Table(BoxLayout):
        def __init__(self, **kwargs):
            super(Table, self).__init__(**kwargs)
            for row in ROWS:
                self.add_widget(Row(row))
    
    
    
    class Row(BoxLayout):
        txt = StringProperty()
        def __init__(self, row, **kwargs):
            super(Row, self).__init__(**kwargs)
            self.txt = row
    
    
    class Test(TabbedPanel):
        pass
    
    class MyApp(App):
    
        def build(self):
            test = Test()
            return test
    
    
    if __name__ == '__main__':
        MyApp().run()
    
    从kivy.app导入应用
    从kivy.uix.tabbedpanel导入tabbedpanel
    从kivy.uix.boxlayout导入boxlayout
    从kivy.properties导入StringProperty
    从kivy.uix.textinput导入textinput
    从kivy.uix.checkbox导入复选框
    从kivy.lang导入生成器
    行=['Goc'、'COC'、'EEE'、'abs'、'kju'、'iop'、'nmg'、'gty'、'jkio'、'dbkgcd'、'udbcbjkb']
    生成器。加载\u字符串(“”)
    :
    do_default_选项卡:False
    选项卡式面板项目:
    文本:“第1页”
    滚动视图:
    表:
    方向:“垂直”
    尺寸提示:无
    高度:自身最小高度
    填充:50,50,50,50
    :
    间距:50
    尺寸提示:无
    大小提示:1
    身高:100
    txt:txtinpt.text
    标签:
    文本:root.txt
    文本输入:
    id:txtinpt
    文本:root.txt
    已禁用:未选中复选框。活动
    复选框:
    id:复选框
    文本:“复选框”
    活动:错误
    按钮:
    文本:“保存”
    """)
    课程表(BoxLayout):
    定义初始(自我,**kwargs):
    超级(表,自).\uuuu初始化(**kwargs)
    对于行中的行:
    self.add_小部件(行)
    类行(BoxLayout):
    txt=StringProperty()
    定义初始值(self,row,**kwargs):
    超级(行,自).\uuuu初始值(**kwargs)
    self.txt=行
    类别测试(选项卡式面板):
    通过
    类别MyApp(应用程序):
    def生成(自):
    测试=测试()
    回归试验
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    MyApp().run()
    
    注意:修改仅影响kv文件

    输出:

    添加滚动视图很简单,但我不确定“对齐标签和文本输入”是什么意思,你能用一个示例或图像来说明你想要什么吗?亲爱的@FJSevilla,将有数百或数千行,因此我们应该通过滚动查看输入。对于数百或数千行,你想使用RecycleView,不要创建所有的小部件,否则您的软件肯定会非常慢。