#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]