Browse Source

Fix: TTkButton without borders: use termWidth for text

pull/71/head
Christian Ludwig 3 years ago
parent
commit
b26bb8a3ff
  1. 12
      TermTk/TTkWidgets/button.py

12
TermTk/TTkWidgets/button.py

@ -91,8 +91,9 @@ class TTkButton(TTkWidget):
)
def __init__(self, *args, **kwargs):
self._text = TTkString(kwargs.get('text', ""))
textWidth = self._text.termWidth()
self._border = kwargs.get('border', False )
self.setDefaultSize(kwargs, 2 + len(self._text), 3 if self._border else 1 )
self.setDefaultSize(kwargs, 2 + textWidth, 3 if self._border else 1 )
TTkWidget.__init__(self, *args, **kwargs)
self._name = kwargs.get('name' , 'TTkButton' )
@ -114,9 +115,9 @@ class TTkButton(TTkWidget):
self._pressed = False
self._keyPressed = False
if self._border:
self.setMinimumSize(2+len(self._text), 3)
self.setMinimumSize(2+textWidth, 3)
else:
self.setMinimumSize(len(self._text)+2, 1)
self.setMinimumSize(textWidth+2, 1)
self.setMaximumHeight(1)
self.setFocusPolicy(TTkK.ClickFocus + TTkK.TabFocus)
@ -156,7 +157,7 @@ class TTkButton(TTkWidget):
@text.setter
def text(self, text):
self._text = TTkString(text)
self.setMinimumSize(len(text), 1)
self.setMinimumSize(self._text.termWidth()+2, 1)
self.update()
def mousePressEvent(self, evt):
@ -217,7 +218,6 @@ class TTkButton(TTkWidget):
w = self.width()-2
h = self.height()
y = (h-1)//2
l = len(text)
text = text.align(width=w, alignment=TTkK.CENTER_ALIGN).addColor(textColor)
if self._border:
if self._border:
@ -229,6 +229,6 @@ class TTkButton(TTkWidget):
self._canvas.drawText(pos=(1,1) ,text=text)
else:
self._canvas.drawText(pos=(0,y), color=borderColor ,text='[')
self._canvas.drawText(pos=(1+len(text),y), color=borderColor ,text=']')
self._canvas.drawText(pos=(1+text.termWidth(),y), color=borderColor ,text=']')
self._canvas.drawText(pos=(1,y) ,text=text)

Loading…
Cancel
Save