【问题标题】:how to set the buttons size inside a spinner in kivy?如何在kivy的微调器中设置按钮大小?
【发布时间】:2013-11-12 10:21:53
【问题描述】:

请了解如何更改或控制 kivy 微调器中特殊按钮的大小。注意:我的微调器是 kv 语言而不是 python,看起来像这样:

Spinner:
    id:some_id
    text:"some text"
    values:("1","2","3")
    size_hint:(None,None)
    size: root.width/4,root.height/12

【问题讨论】:

    标签: python python-2.7 spinner kivy


    【解决方案1】:

    Spinner 内的按钮属于传递给option_cls 属性的类型。默认是SpinnerOption类,实际上是Button的子类。您可以更改传递给此属性的类(它必须具有text 属性和on_release 事件)或全局修改SpinnerOption 类:

    from kivy.lang import Builder
    from kivy.uix.boxlayout import BoxLayout
    from kivy.base import runTouchApp
    
    Builder.load_string('''
    <SpinnerOption>:
        size_hint: None, None
        size: 20, 20
    
    <MyWidget>:
        Spinner:
            id:some_id
            text:"some text"
            values:("1","2","3")
            size_hint:(None,None)
            size: root.width/4,root.height/12
    ''')
    
    class MyWidget(BoxLayout):pass
    
    runTouchApp(MyWidget())
    

    使用自定义按钮:

    from kivy.lang import Builder
    from kivy.uix.boxlayout import BoxLayout
    from kivy.uix.button import Button
    from kivy.uix.spinner import Spinner
    from kivy.base import runTouchApp
    from kivy.properties import ObjectProperty
    
    Builder.load_string('''
    <MyButton>:
        size_hint: None, None
        size: 20, 20
    
    <MyWidget>:
        MySpinner:
            id:some_id
            text:"some text"
            values:("1","2","3")
            size_hint:(None,None)
            size: root.width/4,root.height/12
    ''')
    
    class MyButton(Button):
        pass
    
    class MySpinner(Spinner):
        option_cls = ObjectProperty(MyButton) # setting this property inside kv doesn't seem to work
    
    class MyWidget(BoxLayout):
        pass    
    
    runTouchApp(MyWidget())
    

    【讨论】:

    • 这正是我想要的@Nykakin,但仍然有一个问题:如果我采用第一个解决方案(全局覆盖类 SpinnerOption?),如何设置与根小部件成比例的高度和宽度?跨度>
    • 不幸的是,我不知道,在尝试编码后,我可以说它比我想象的要复杂。
    • 我刚刚发现微调器选项默认是可滚动的,这可能会解决问题。你看,我已经构建了一个工资单计算器应用程序,我希望在每个 Android 设备上运行它,我担心的是小显示器,因为打开时微调器不适合小屏幕。它在 Nexus 4 上非常好,在三星 s4 上非常棒,但对于具有 240x320 显示屏的小型设备......
    • 如何在多列中列出按钮而不是仅列...?这也可以让您节省空间。
    • 当然我这样做了,但也有 3 个微调器,您可以使用它们选择家庭状况、孩子数量的组合...给我您的 gmail 或您的 whatsapp 号码,以便我可以发送给您一张照片
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2017-07-31
    • 2011-02-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多