首页 > 解决方案 > 关于 Spinner 小部件在 Kivy / Python 中如何工作的小疑问

问题描述

我需要有关 Spinner 小部件的帮助。我的第一个问题是如何更改微调器下拉列表中按钮的大小,因为我的活动按钮微调器很小,但我的下拉列表是文本,所以它需要足够宽才能阅读文本(我将通过照片举例说明问题)。第二个问题是我不希望微调器下拉列表中的文本填充按钮(我将在照片中举例说明)。第三个问题是我希望在微调器内部可以调用类应用程序内部的函数,定义下拉列表中的值之一(我将在照片中举例说明)。

主文件

...
Spinner:
    size_hint: None, None
    width: '30sp'
    height: '30sp'
    border: 0,0,0,0
    background_normal: 'imag1.png'
    background_down: 'imag2.png'
    values: "gelo","carvão","salmão"
    on_text: 'gelo'                           
        on_release: app.IluminanciaMaceió()  #I know it's wrong, but I want the action to be this, how could I fix it?
...

主文件

...
class MainApp(App):
    texture = ObjectProperty()
    
    def iluminanciamaceio(self):
        mac = 21000
        mac = str(21000)
        self.root.get_screen('primeira').ids.ie.text = mac
        self.root.get_screen('primeira').ids.nlocaliza.text = 'Maceió'

...

在此处输入图像描述

标签: pythonandroidpython-3.xkivy

解决方案


Spinner没有选项允许 的宽度DropDownSpinner自身不同。您可以定义自己的扩展,Spinner即具有该能力。

Button要在单击a 时调用方法Spinner DropDown,只需使用 的on_text事件Spinner

    on_text: app.some_method(self.text)

然后,在该方法中,您可以根据文本决定要做什么:

def some_method(self, button_text):
    print('Button text:', button_text)

推荐阅读