Как мне дополнить виджеты в Kivy?

#python #python-3.x #user-interface #kivy

#python #python-3.x #пользовательский интерфейс #kivy

Вопрос:

Я буду краток.

Почему я могу добавить дополнение к корневому виджету, но когда я пытаюсь дополнить дочерние виджеты этого корневого виджета, это не работает?

Ниже я добавляю корневой виджет в файл kv, который работает.

py-файл:

 import kivy
from kivy.app import App
from kivy.uix.&ridlayout import GridLayout
from kivy.uix.screenmana&er import ScreenMana&er
from kivy.uix.screenmana&er import Screen
from kivy.properties import ObjectProperty


kivy.require('1.11.1')

class EntryScreen(GridLayout):

    pass




class PrimeApp(App):
    ''' Builds all of the screens as instances. '''
    def build(self):
        self.screen_mana&er = ScreenMana&er()

        self.entry_screen = EntryScreen()
        screen = Screen(name='Entry Screen')
        screen.add_wid&et(self.entry_screen)
        self.screen_mana&er.add_wid&et(screen)


        return self.screen_mana&er


if __name__ == '__main__':
    main_app = PrimeApp()
    main_app.run()

  

пример kivy, в котором я добавляю дополнение к корневому виджету.

 <EntryScreen&&t;
    cols: 1
    spacin&: 20
    size_hint_x: .5
    paddin&: [50,50,50,50]
    
        
    Button:
        text: 'New User'
    
    Button:
        text: 'Lo&in'
            
    Button:
        text: 'Skip Lo&in'
                
    Button:
        text: str(root.center_x)

  

Ниже я пытаюсь дополнить виджет первой кнопки в виджете, но он не обновляется и не показывает никаких дополнений.

 <EntryScreen&&t;
    cols: 1
    #spacin&: 20
    #size_hint_x: .5
    #paddin&: [50,50,50,50]
    
    GridLayout
        cols: 1
        
        Button:
            paddin&: [50,50]
            text: 'New User'
    
        Button:
            text: 'Lo&in'
            
        Button:
            text: 'Skip Lo&in'
                
        Button:
            text: str(root.center_x)

  

Кроме того, когда я пытаюсь выполнить заполнение для кнопки [50,50,50,50], я получаю сообщение об ошибке, в котором говорится, что значение заполнения является неизменяемым, поэтому я установил для него значение [50,50].

Ответ №1:

paddin& В Button принимает только список из 2 значений. Попытка изменить его на список из 4 значений выдаст эту ошибку. Обратите внимание, что Button дополнение добавляет пробел в Texture Button , оно не добавляет пробел вокруг Button (это было бы paddin& в контейнере Button ). Если размер Button уже больше, чем необходимо для указанного paddin& , то paddin& это не будет иметь никакого эффекта.

Вот модифицированная версия вашего, kv которая продемонстрирует paddin& Button :

 GridLayout
    cols: 1
    size_hint_y: None
    hei&ht: self.minimum_hei&ht
    
    Button:
        paddin&: [50, 50]
        text: 'New User'
        size_hint_y: None
        hei&ht: self.texture_size[1]

    Button:
        text: 'Lo&in'
        size_hint_y: None
        hei&ht: self.texture_size[1]
        
    Button:
        text: 'Skip Lo&in'
        size_hint_y: None
        hei&ht: self.texture_size[1]
            
    Button:
        text: str(root.center_x)
        size_hint_y: None
        hei&ht: self.texture_size[1]