如何增加微调器中下拉列表的宽度? [英] How do I increase the width of the dropdown list within a spinner?

查看:59
本文介绍了如何增加微调器中下拉列表的宽度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何增加微调框内下拉列表的宽度?您在照片中看到的我的按钮很小,并且我的下拉列表中的值没有完全显示出来.我在互联网上做了一些研究,发现有些人说我需要创建一个类微调器并添加这些功能.但是我不知道该怎么做.有人可以告诉我如何执行此操作的代码示例吗?

How do I increase the width of the dropdown list within a spinner? My button as you can see in the photo is small, and the values ​​in my drop-down list do not appear completely. I did a little research on the internet and I could see that some people say that I need to create a class spinner and add these features. But I don't know how to do this. Could someone show me a code example of how I do this?

main.kv(简化代码)

main.kv (simplified code)

...
Spinner:
    id: spinnerrpi
    size_hint: None, None
    width: '30sp'
    height: '30sp'
    border: 0,0,0,0
    background_normal: 'seta1.png'
    background_down: 'seta2.png'
    values: "Branco Neve","Banco Gelo","Amarelo","Rosa Claro","Bege"
    on_text: app.spinner_rpiso(spinnerrpi.text)

...

main.py(简化代码)

main.py (simplified code)

...
class PrimeiraJanela(Screen):
    pass

class GerenciadorDeJanelas(ScreenManager):
    pass

class MainApp(App):
    texture = ObjectProperty()

    def build(self):
        self.title = 'MyApp'
        self.texture = Image(source = 'wave.png').texture

        sm = ScreenManager()
        sm.add_widget(PrimeiraJanela(name = 'primeira'))
        sm.current = 'primeira'
        return sm

    def spinner_rpiso(self, value):
        if (value=='Branco Neve'):
            self.root.get_screen('primeira').ids.rpi.text = str('0.90')
            self.root.get_screen('primeira').ids.spinnerrpi.text = ''
        if (value=='Banco Gelo'):
            self.root.get_screen('primeira').ids.rpi.text = str('0.70')
            self.root.get_screen('primeira').ids.spinnerrpi.text = ''
        if (value=='Amarelo'):
            self.root.get_screen('primeira').ids.rpi.text = str('0.70')
            self.root.get_screen('primeira').ids.spinnerrpi.text = ''
        if (value=='Rosa Claro'):
            self.root.get_screen('primeira').ids.rpi.text = str('0.60')
            self.root.get_screen('primeira').ids.spinnerrpi.text = ''
        if (value=='Bege'):
            self.root.get_screen('primeira').ids.rpi.text = str('0.60')
            self.root.get_screen('primeira').ids.spinnerrpi.text = ''

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

aplicativo = MainApp()
aplicativo.run()

推荐答案

这里是 Spinner 的扩展,它继承了 option_width 属性:

Here is an extension of Spinner that honors an option_width property:

class SpinnerWithOptionWidth(Spinner):
    option_width = NumericProperty(0)  # the new property

    def __init__(self, **kwargs):
        self.invisible_attacher = None
        super(SpinnerWithOptionWidth, self).__init__(**kwargs)


    def on_is_open(self, instance, value):
        # This method is modified from Spinner
        attacher = self
        if value:
            if self.option_width > 0:
                if self.invisible_attacher is None:
                    # The DropDown is the same width as the widget it attaches to
                    # so make an invisible widget with the desired width
                    self.invisible_attacher = Widget(opacity=0, size_hint=(None, None))
                    self.add_widget(self.invisible_attacher)
                self.invisible_attacher.pos = (self.center_x - self.option_width/2, self.y)
                self.invisible_attacher.size = (self.option_width, self.height)
                attacher = self.invisible_attacher
            # open th DropDown
            self._dropdown.open(attacher)
        else:
            if self._dropdown.attach_to:
                if self.invisible_attacher:
                    self.remove_widget(self.invisible_attacher)
                    self.invisible_attacher = None
                self._dropdown.dismiss()

这篇关于如何增加微调器中下拉列表的宽度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆