How can the text, icon, and a button state (toggle high or low) be changed when a button is clicked? Just for understanding the mechanics, I wanted to know the most verbose and least verbose way to change text on a button, text on a label, an icon, and a button state (toggle up/ down) from a single button click from a button that contains the said text, icon, toggle state, and visually associated label. import bpy from bpy.props import * def initSceneProperties(scn): stin = bpy.types.Scene stin.MyString1 = BoolProperty( name = "String") scn['MyString1'] = "Test 1" stin.MyString2 = BoolProperty( name = "String") scn['MyString2'] = "Test 2" return initSceneProperties(bpy.context.scene) # Layout panel class LayoutPanel(bpy.types.Panel): bl_label = "Hide Tools" bl_space_type = "VIEW_3D" bl_region_type = "TOOL_PROPS" def draw(self, context): layout = self.layout scn = context.scene layout.label("TEST") # First String layout.prop(scn, 'MyString1', text="") row = layout.row(align=True) row.operator("my.button", text="1", icon="CANCEL", toggle=True) # Second String layout.prop(scn, 'MyString2', text="") row = layout.row(align=True) row.operator("my.button", text="2", icon="CANCEL", toggle=True) # Button class OBJECT_OT_Button(bpy.types.Operator): bl_idname = "my.button" bl_label = "Button" def execute(self, context): scn = context.scene layout = self.layout icon = LayoutPanel.draw if scn.MyString1 == "MyString2" | row.operator(toggle=True): label = "TEST2" icon.row.operator[icon] == "ERROR" icon.row.operator[text] == "A" icon.row.operator[toggle] = True else: scn.MyString1 == "MyString1" label = "TEST1" icon.row.operator[icon] == "CANCEL" icon.row.operator[text] == "B" icon.row.operator[toggle] = False return{'FINISHED'} bpy.utils.register_module(__name__)