动态更改Kivy Spinner值

奥马尔·利特尔(Omar Little)

我正在寻找一种根据从父级微调器中选择的文本来设置Kivy微调器的值的方法。问题是我已经用kv语言定义了两个微调器。我不确定方法是否是每次从第一个微调器中选择一个新值时都销毁第二个微调器,然后重新生成它(如果这样,由于kv代码我不知道该怎么做),或者将会有一种方法基于更新列表的on_text过程来动态更新第二个微调器的“值”。

在所有情况下,以下代码均不起作用。任何帮助表示赞赏。谢谢。

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout 
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.spinner import Spinner

Builder.load_string('''
<MainScreen>:
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'top'
        BoxLayout:
            size_hint: 1, .9
            orientation: 'vertical'
            padding: 80
            spacing: 20
            Spinner:
                id: spinner_1
                text: '< Select >'
                values: root.pickType
                on_text: root.updateSubSpinner(spinner_1.text)
            Spinner:
                id: spinner_2
                text: '< Select >'
                values: root.pickSubType

    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'bottom'
        size_hint: 1, .1
        Button:
            on_press: root.onExit()
            text: 'Exit'
            font_size: 50

''')

class MainScreen(FloatLayout):
    def __init__(self, **kwargs):
        self.buildLists()
        super(MainScreen, self).__init__(**kwargs)

    def buildLists(self):
        self.pickType = ['Select','#1','#2','#3']
        self.pickSubType = ['Select'] 

    def updateSubSpinner(self,text):
        if text == '#1':
            self.pickSubType.extend('A'+'B')
        elif text == '#2':
            self.pickSubType.extend('P'+'Q')
        else:
            self.pickSubType.extend('Y'+'Z')

    def onExit(self):
        App.get_running_app().stop()

class TestApp(App):
    def build(self):
        return MainScreen()

if __name__ == "__main__": 
    TestApp().run() 
耶利格萨

您应该引用子微调器值列表,而pickSubType不是未绑定到列表的列表。例子:

def updateSubSpinner(self, text):
    self.ids.spinner_2.text = 'Select'

    if text == '#1':
        self.ids.spinner_2.values = ['A', 'B']
    elif text == '#2':
        self.ids.spinner_2.values = ['P', 'Q']
    else:
        self.ids.spinner_2.values = ['Y', 'Z']

如果第一个不是,则书写values: root.pickSubType不会将绑定pickSubType您可以根据需要将其升级到a ,但这不是必需的。valuesListPropertyListProperty

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

比较 Spinner 值以更改 textView

来自分类Dev

使用 for 循环的 Android Spinner 动态值

来自分类Dev

如何在Kivy Spinner中通过单击值来更改图像的来源?

来自分类Dev

使用鼠标上下更改值时的UI Spinner Bug

来自分类Dev

如何在Kivy中更改模板值

来自分类Dev

AngularJS动态更改字段值

来自分类Dev

动态更改id属性值

来自分类Dev

动态更改画布的feColorMatrix值

来自分类Dev

如何动态更改xpath的值

来自分类Dev

动态更改输入属性的值

来自分类Dev

使用JavaScript动态更改值

来自分类Dev

Symfony - 动态更改配置值

来自分类Dev

使用 Javascript 动态更改值

来自分类Dev

如何动态更改操作栏Sherlock Spinner DropDown的背景颜色?

来自分类Dev

如何动态更改线插值

来自分类Dev

在动态表上,更改类并替换值

来自分类Dev

动态更改JS中表单的值

来自分类Dev

动态更改CF7表单值

来自分类Dev

动态更改从JMeter中的CSV读取的值

来自分类Dev

在TypeScript中动态更改枚举的值

来自分类Dev

根据数组中的值动态更改CSS

来自分类Dev

如何通过URL动态更改输入值

来自分类Dev

使用sObject动态更改字段值

来自分类Dev

使用querySelectorAll动态更改输入的值

来自分类Dev

在Tkinter中动态更改标签值

来自分类Dev

下拉值动态更改页面样式

来自分类Dev

如何使用vue动态更改所选值?

来自分类Dev

使用jQuery动态更改CSS值

来自分类Dev

如何动态更改线插值