Source code for fancywidgets.pyQtBased.FingerTabWidget
'''A vertical tab widget - code origin from:
https://gist.github.com/LegoStormtroopr/5075267
'''
from PyQt4 import QtGui, QtCore
[docs]class FingerTabBarWidget(QtGui.QTabBar):
def __init__(self, parent=None, *args, **kwargs):
self.tabSize = QtCore.QSize(kwargs.pop('width',100), kwargs.pop('height',25))
QtGui.QTabBar.__init__(self, parent, *args, **kwargs)
[docs] def paintEvent(self, event):
painter = QtGui.QStylePainter(self)
option = QtGui.QStyleOptionTab()
for index in range(self.count()):
self.initStyleOption(option, index)
tabRect = self.tabRect(index)
tabRect.moveLeft(10)
painter.drawControl(QtGui.QStyle.CE_TabBarTabShape, option)
painter.drawText(tabRect, QtCore.Qt.AlignVCenter |\
QtCore.Qt.TextDontClip, \
self.tabText(index));
painter.end()
# Shamelessly stolen from this thread:
# http://www.riverbankcomputing.com/pipermail/pyqt/2005-December/011724.html
[docs]class FingerTabWidget(QtGui.QTabWidget):
"""
A QTabWidget equivalent which uses our FingerTabBarWidget
"""
def __init__(self, parent=None, *args, **kwargs):
pos = kwargs.pop('pos',QtGui.QTabWidget.West)
QtGui.QTabWidget.__init__(self, parent, *args, **kwargs)
self.setTabBar(FingerTabBarWidget(self))
self.setTabPosition(pos)
[docs]class AutoResizeFingerTabWidget(FingerTabWidget):
def __init__(self, parent=None, *args, **kwargs):
FingerTabWidget.__init__(self, parent, *args, **kwargs)
if parent is not None:
parent.resizeEvent = self.forceResize
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
#with default opts:
w = FingerTabWidget()
w.setWindowTitle(w.__class__.__name__)
#with individual opts
w2 = FingerTabWidget(width=200,height=500, pos=QtGui.QTabWidget.East)
w2.setWindowTitle(w.__class__.__name__)
digits = ['Thumb','Pointer','Rude','Ring','Pinky']
for i,d in enumerate(digits):
widget = QtGui.QLabel("Area #%s <br> %s Finger"% (i,d))
widget2 = QtGui.QLabel("Area #%s <br> %s Finger"% (i,d))
w.addTab(widget, d)
w2.addTab(widget2, d)
w.show()
w2.show()
app.exec_()