Welcome!
This is the community forum for my apps Pythonista and Editorial.
For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.
Pythonista View (question)
-
@DavinE, can you share a small example of your problem case?
-
i think this shows the problem, and a potential solution:
import ui from objc_util import * v=ui.View(bg_color='white') b=ui.Button(title='press to resize with insets') b.border_width=1 b.corner_radius=50 @on_main_thread def a(sender): sender.objc_instance.button().contentEdgeInsets=(0, 50,0, 50) #t,l,b,r sender.size_to_fit() b.action=a v.add_subview(b) v.present()
The height changes when using this method, so i assume that those edgeinsets are overriding some other sort of anchor or layout constraint that i don't get.
-
@JonB, sorry to be thick, but I still do not understand what the problem is or what the insets are for. In the example above I used corner radius to create buttons with rounded ends, but this must be about something else.
-
@DavinE, if you use dock top_center on two buttons, their top centers will be placed in the same place and they will overlap.
If you want them one above the other, you can still dock both top_center, and then adjust the second view as follows:
at(second).top = at(first).bottom
-
i'll Show you tomorrow or on the Weekend my Examples for my two Problems
-
@mikael said:
@DavinE, if you use dock top_center on two buttons, their centers will be placed in the same place and they will overlap.
If you want them one above the other, you can dock both top_center, and then adjust the second view as follows:
at(second).top = at(first).bottom
Yes Thats My issue...
They will overlap....I will have a Look at this in the Weekend.
Short and stupid Question:
First second are my two Buttons ??Thanks a looooot for the great help here!!
-
-
@JonB said:
i think this shows the problem, and a potential solution:
import ui from objc_util import * v=ui.View(bg_color='white') b=ui.Button(title='press to resize with insets') b.border_width=1 b.corner_radius=50 @on_main_thread def a(sender): sender.objc_instance.button().contentEdgeInsets=(0, 50,0, 50) #t,l,b,r sender.size_to_fit() b.action=a v.add_subview(b) v.present()
The height changes when using this method, so i assume that those edgeinsets are overriding some other sort of anchor or layout constraint that i don't get.
thats a good example...
but is it Possible to set the size at begin ?
not over an action....is this example okay to do this so ?:
import ui from objc_util import * v=ui.View(bg_color='white') b=ui.Button(title='press to resize with insets') b.border_width=5 b.corner_radius=50 b.objc_instance.button().contentEdgeInsets=(5, 50,5, 50) b.size_to_fit() v.add_subview(b) v.present()
-
-
@mikael said:
@JonB, sorry to be thick, but I still do not understand what the problem is or what the insets are for. In the example above I used corner radius to create buttons with rounded ends, but this must be about something else.
My Problem is when i use border_width and border_radius my text is cutted by the Button...
@JonB understand my Problem correctly -
@DavinE, inspired by your question, I uploaded a new version with an attach option with these functions:
above
below
left_of
right_of
With those, your use case could also be:
dock(first).top_center(superview) attach(second).below(first)
-
@mikael said:
@DavinE, inspired by your question, I uploaded a new version with an attach option with these functions:
above
below
left_of
right_of
With those, your use case could also be:
dock(superview).top_center(first) attach(second).below(first)
Great :D how can i Update my files ?
over stash ? -
@DavinE,
pip update pythonista-anchors
-
oh man..... i'm so stupid :D
ty @mikael
-
@DavinE, don’t be hard on yourself. Just remember you have the
-h
option for most stash commands, likepip -h
. -
Thanks @mikael for that great Support here Thumbs Up
-
@mikael said:
@DavinE, inspired by your question, I uploaded a new version with an attach option with these functions:
above
below
left_of
right_of
With those, your use case could also be:
dock(first).top_center(superview) attach(second).below(first)
Hay @mikael,
i Think i found an issue in the attach function:
xxx.../site-packages-3/anchors/core.py:780: ConstraintWarning: Probably missing superview at(self.view).left = at(other).right xxx.../site-packages-3/anchors/core.py:801: ConstraintWarning: Probably missing superview getattr(anchor_at, prop) + modifier) Traceback (most recent call last): File "_ctypes/callbacks.c", line 234, in 'calling callback function' File "xxx..../Pythonista3.app/Frameworks/Py3Kit.framework/pylib/site-packages/objc_util.py", line 1066, in OMMainThreadDispatcher_invoke_imp retval = func(*args, **kwargs) File "xxx.../site-packages-3/anchors/core.py", line 213, in on_change value_changed = next(constraint.runner) File "<string>", line 27, in constraint_runner AttributeError: 'NoneType' object has no attribute 'bounds'
i get this by:
attach(second).right_of(first)
-
@DavinE, yes thank you, there was a missing
add_subview
, now fixed in the version on PyPI. -