Hi James, The UI is only redraw when really needed. This is important for performance.
In your case, the correct approach is for you to manually tag the area (the panel where your button is) for redraw with: `area.tag_redraw()` If you run an operator from that 'area', you can get the area with context.area. A more radical (and not recommended) approach is to force a global redraw: bpy.ops.wm.redraw_timer(type='DRAW', iterations=1) Cheers, Dalai -- blendernetwork.org/dalai-felinto www.dalaifelinto.com 2016-11-25 2:37 GMT+01:00 James Crowther <[email protected]>: > Hi, > I’ve been trying to create a button that begins a task to connect two > blender sessions together on two separate machines, so far I have been able > to get the backend to work, but I would like to change the appearance of the > button to match the state my task is in. Its fairly basic, when the user > presses the button it changes to a pending state, then a connected state if > the connection works, or back to the ready state if the connection fails > (there may also be a report to the console or info section in this case, > separate issue thought). > > I use a simple piece of code to do this in a custom panel class > > def draw(self, context): > > button_operator = operators[client.status] > button_icon = icons[client.status] > button_text = text[client.status] > > layout.operator( button_operator, button_icon, button_text) > > > depending on the value of client.state, a different set of button operator, > icon and text is displays. This kind of works, but the issue I am having is > that the user has to mouse over the button in order to make the icon and text > change. I also suspect this is the same for the operator, but since you have > to mouse over to click the button, i never trigger the wrong operator. > > I have been searching for why the button only re-draws on mouseover and not > when the values of button_operator, icon and text change, but I haven’t found > anything to suggest why. > > So, I’d like to know, how can I create a button that does redraw when these > properties change? What actually causes the operator to redraw other than a > mouse over? I have experimented with layout.prop, this will change when the > property changes and I don’t have to mouse over it, but I would rather have a > button than a property since the button is used to connect, cancel and > disconnect. > > Thanks! > > James > _______________________________________________ > Bf-python mailing list > [email protected] > https://lists.blender.org/mailman/listinfo/bf-python _______________________________________________ Bf-python mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-python
