Kivy: Как изменить цвет и размер кнопки «Spinner»? - PullRequest
0 голосов
/ 04 июня 2019

Я ищу способ указать цвет кнопки и размер кнопки в Spinner виджете.

Я хочу указать не основная (показана) кнопка, а кнопка раскрывающегося списка . Кажется, что Spinner виджет, вероятно, имеет только API для указания основной (показанной) кнопки.

Как мне изменить цвет и размер моего блесны?

import kivy
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.spinner import Spinner

class SpinnerWidget(Spinner):
    def __init__(self, **kwargs):
        super(SpinnerWidget, self).__init__(**kwargs)
        self.pos_hint = {'top':0.8, 'x':0.2}
        self.size_hint_x = 0.5
        self.size_hint_y = 0.1

        # default value shown
        self.text = 'Home'

        # main button color = white
        self.background_color = [255,255,255,1]

        # font size
        self.font_size = "12sp"

        # font_color
        self.color = [0,0,0,1]

        # available values
        self.values=('Home', 'Work', 'Other', 'Custom')

        # Is it possible to change color of drop-down button here? 
        # ~~~

    def show_selected_value(spinner, text):
        print('The spinner', spinner, 'has text', text)

class TestScreen(Screen):
    def __init__(self, **kwargs):
        super(TestScreen, self).__init__(**kwargs)
        spi = SpinnerWidget()
        self.add_widget(spi)

sm = ScreenManager()

class DemoApp(App):
    def build(self):
        sm.add_widget(TestScreen(name='test'))
        return sm

if __name__ == '__main__':
    DemoApp().run()

1 Ответ

1 голос
/ 04 июня 2019

Чтобы изменить размер и цвет Button в Spinner, внедрите dropdown_cls и option_cls .

Изменить ширину кнопки - dropdown_cls

  • Установите auto_width на False (по умолчанию True)
  • Предоставьте свои width

Изменить цвет и высоту кнопки - option_cls

Snippets - py file

from kivy.uix.spinner import Spinner, SpinnerOption
from kivy.uix.dropdown import DropDown


class SpinnerOptions(SpinnerOption):

    def __init__(self, **kwargs):
        super(SpinnerOptions, self).__init__(**kwargs)
        self.background_normal = ''
        self.background_color = [0, 0, 1, 1]    # blue colour
        self.height = 26


class SpinnerDropdown(DropDown):

    def __init__(self, **kwargs):
        super(SpinnerDropdown, self).__init__(**kwargs)
        self.auto_width = False
        self.width = 150


class SpinnerWidget(Spinner):
    def __init__(self, **kwargs):
        super(SpinnerWidget, self).__init__(**kwargs)
        self.dropdown_cls = SpinnerDropdown
        self.option_cls = SpinnerOptions
        ...

выход

Result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...