Hi Faris:
"disabled" attribute on button will result in a serious security problem: it can be removed manually in the browser's develop tool and the button will be re-enabled. So does the "readonly" attribute on button. I think that's why odoo framework does not provide the 'disabled' .

So my opinion better not use 'disabled' or 'readonly' on button. Attribute “Invisible” on button is safe, it will not render the element onto the browser.
You can try create 2 same buttons but one is visible while the other is not:
<button name="mybutton" type="object" title="Text on button" icon="fa-pencil" attrs="{'invisible': [('condition','=',False)]}"/>
<button name="" type="" title="Text on button" icon="fa-pencil" attrs="{'invisible': [('condition','!=',False)]}"/>