yarik_py
(колотов ярослав)
#1
здравствуйте, есть такой код:
from kivy.app import App
from kivy.uix.dropdown import DropDown
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.base import runTouchApp
from kivy.uix.checkbox import CheckBox
class CustomDropDown(DropDown):
pass
class app(App):
def build(self):
dropdown = CustomDropDown()
mainbutton = Button(text='', size_hint=(0.3, 0.1))
mainbutton.pos_hint = {'top': 1, 'right': 1}
mainbutton.bind(on_release=dropdown.open)
dropdown.bind(on_select=lambda instance, x: setattr(mainbutton, 'text', x))
button = Button(text='салам', size_hint=(None, None))
button.pos_hint = {'center_x': 1, 'center_y': 1}
mainbutton.add_widget(button)
return mainbutton
if __name__ == '__main__':
app().run()
я хочу кнопку “салам” переместить в другое место, но вот это “button.pos_hint = {‘center_x’: 1, ‘center_y’: 1}” не помогает
Sergebl
(Сергей)
#2
а если так написать:
button = Button(text='салам', size_hint=(None, None), pos=(1,1))
yarik_py
(колотов ярослав)
#3
если сделать так то при изменении размера окна кнопка не будет менять расположение
AlexP
(Alex P.)
#4
А так?)
button = Button(text='салам', size_hint=(None, None), pos_hint={'center_x': 1, 'center_y': 1})
AlexP
(Alex P.)
#6
https://kivy.org/doc/stable/api-kivy.uix.widget.html#kivy.uix.widget.Widget.pos_hint
pos_hint
is not used by all layouts. Check the documentation of the layout in question to see if it supports pos_hint.
Видимо Button
(mainbutton
) не поддерживает это и надо брать другой layout (и положить туда кнопки) или самому вычислять в on_size.
yarik_py
(колотов ярослав)
#7
решил попробовать так:
FloatLayout.add_widget(mainbutton)
FloatLayout.add_widget(button)
return FloatLayout
выдаёт ошибку:
add_widget() missing 1 required positional argument: 'widget'
AlexP
(Alex P.)
#8
Надо экземпляр FloatLayout
создать, как сделано со всеми другими классами тут.