Я создаю кнопки, которые on_press выполняет движение другой кнопки. Это вид ...
Я не могу опубликовать изображение, но я дал ссылку
Я изменяю свойство pos_hint
для событий кнопкино виджет не движется в соответствии с этим. На самом деле он не перемещается даже на пиксель :) Я знаю, что могу изменить свойства widget.x
и widget.y
для перемещения виджета, но я хочу знать, возможно ли изменить его, используя pos_hint
РЕДАКТИРОВАТЬ: Я использую Python 3.x и на Debain OS
Я попытался присвоить button.pos_hint
словарю, а затем изменить его и снова присвоить button.pos_hint
Вот что я говорю
new_dict = some_button.pos_hint
#changing new_dict here...
some_button.pos_hint = new_dict
main.py ->
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.properties import ObjectProperty
from kivy.uix.widget import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import DictProperty
class Login2(FloatLayout):
btn_demo = ObjectProperty(None)
def just(self, arg):
if arg == "x++":
print(self.btn_demo.pos_hint)
if "x" in self.btn_demo.pos_hint.keys():
self.btn_demo.pos_hint["x"] += 0.1
else:
self.btn_demo.pos_hint["x"] = 0
elif arg == "top--":
print(self.btn_demo.pos_hint)
if "top" in self.btn_demo.pos_hint.keys():
self.btn_demo.pos_hint["top"] -= 0.1
else:
self.btn_demo.pos_hint["top"] = 0
class MainApp(App):
def build(self):
return Login2()
if __name__ == "__main__":
MainApp().run()
kv file ->
<Login2>
btn_demo:btn_demo
GridLayout:
cols:1
size: root.width,root.height
FloatLayout:
Button:
pos_hint:{"top":1,"x":0.3}
size_hint:0.2,0.2
id:btn_demo
text:"Demo"
GridLayout:
size_hint: 1,0.2
cols:6
Button:
text:"x++"
on_press:root.just("x++")
Button:
text:"x--"
on_press:root.just("x--")
Button:
text:"y++"
on_press:root.just("y++")
Button:
text:"y--"
on_press:root.just("y--")
Button:
text:"top++"
on_press:root.just("top++")
Button:
text:"top--"
on_press:root.just("top--")
Button:
text:"bot++"
on_press:root.just("bot++")
Button:
text:"bot--"
on_press:root.just("bot--")
Button:
text:"rgt++"
on_press:root.just("rgt++")
Button:
text:"rgt--"
on_press:root.just("rgt--")
Button:
text:"lef++"
on_press:root.just("lef++")
Button:
text:"lef--"
on_press:root.just("lef--")
Как мне использовать pos_hint
, чтобы изменить положение виджета кнопки ???
SOLUTION ::::> вызовите layout_instance.do_layout (), чтобы изменение появилось на экране ... Вот так:
#change co-ordinates you want on widget_instance
#then call widget_instance's parent layout's do_layout() method