#python #kivy #kivy-language
#python #kivy #kivy-language
Вопрос:
Итак, я попробовал немного Kivy, и я ввел только кнопку в свой kv-файл, связанный со следующим кодом python:
#importing library
import kivy
kivy.require('1.11.1') #version
#importing functionality
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
class FloatLayout(Widget):
username = ObjectProperty(None)
password = ObjectProperty(None)
"""idle code here, does nothing"""
class howyoudoin(App):
def build(self):
return FloatLayout()
if __name__ == '__main__':
howyoudoin().run()
И вот мой kv-файл:
<Button>:
font_size:27
size_hint: 1.0, 1.0
background_color: 0.1, 0.5, 0.6, 1
<FloatLayout>:
Button:
pos_hint:{"top":1.0}
id: btn
text: "button"
Каким-то образом команды size_hint и pos_hint просто не будут работать для меня. Это возвращает мою кнопку, но игнорирует команды pos_hint и size_hint .
Кнопка не представляет желаемую позицию и размер
Все остальные атрибуты работают: когда я меняю font_size в коде, font_size также изменяется при запуске. Я не могу понять, почему:(
Ответ №1:
Вы переопределяете существующий class ( FloatLayout
) , и тем самым делаете его простым Widget
, а не a Layout
. Поскольку ваш FloayLayout
не является a Layout
, он не уважает size_hint
и pos_hint
. Переопределение существующего класса, как правило, является плохой идеей. Если вы хотите расширить FloatLayout
, попробуйте что-то вроде этого:
#importing library
import kivy
kivy.require('1.11.1') #version
#importing functionality
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
class MyFloatLayout(FloatLayout):
username = ObjectProperty(None)
password = ObjectProperty(None)
"""idle code here, does nothing"""
class howyoudoin(App):
def build(self):
return MyFloatLayout()
if __name__ == '__main__':
howyoudoin().run()
kv
файл:
<Button>:
font_size:27
size_hint: 1.0, 1.0
background_color: 0.1, 0.5, 0.6, 1
<MyFloatLayout>:
Button:
pos_hint:{"top":1.0}
id: btn
text: "button"
В приведенном выше коде MyFloatLayout
расширяется FloatLayout
, поэтому size_hint
pos_hint
Button
теперь будут соблюдены и из.