Hello all,
I just started learning pyqt.. When i'm experimenting with the tabbar i encountered this.. As a minimal example i want to show a button in tab1 and a label in tab2.. Here's what i did
from PyQt4 import QtGui
class Ui_TabWidget(QtGui.QTabWidget):
def __init__(self,parent=None):
QtGui.QTabWidget.__init__(self,parent)
self.setObjectName("TabWidget")
self.resize(400, 300)
self.setWindowTitle(QtGui.QApplication.translate("TabWidget", "TabWidget", None, QtGui.QApplication.UnicodeUTF8))
#Creating the tabbar
self.tabBar=QtGui.QTabBar(self)
#Adding the first tab
self.tabBar.addTab("tab1")
self.tabBar.setTabText(0,"TAB1")
#The widget intended for tab1
self.widgetforTab1=QtGui.QWidget()
self.addTab(self.widgetforTab1,"")
self.buttonForTab1=QtGui.QPushButton(self.widgetforTab1)
self.buttonForTab1.setText("Button in Tab1")
#Adding the second Tab
self.tabBar.addTab("tab2")
self.tabBar.setTabText(1,"TAB2")
#The widget intended for tab2
self.widgetForTab2=QtGui.QWidget()
self.addTab(self.widgetForTab2,"")
self.labelForTab2=QtGui.QLabel(self.widgetForTab2)
self.labelForTab2.setText("Label in Tab2")
#Adding the tabbar to the tabwidget
self.setTabBar(self.tabBar)
self.tabBar.setMovable(True)
self.setCurrentIndex(0)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
ui = Ui_TabWidget()
ui.show()
sys.exit(app.exec_())
In the above program the widget intended for tab1 and tab2 functioned well. Anyhow i can't see a connection between the widget and the tabbar.. The tabbar tab is created independently and so the tabwidget tab. Both have tab titles the one given for tabbar alone is shown.. But if i set the index as o the first tab is shown along with widgetForTab1..
In my second program the lack of coupling between the widget and tabbar is the cause for the problem..
from PyQt4 import QtGui
class Ui_TabWidget(QtGui.QTabWidget):
def __init__(self,parent=None):
QtGui.QTabWidget.__init__(self,parent)
self.setObjectName("TabWidget")
self.resize(400, 300)
self.setWindowTitle(QtGui.QApplication.translate("TabWidget", "TabWidget", None, QtGui.QApplication.UnicodeUTF8))
#Creating the tabbar
self.tabBar=QtGui.QTabBar(self)
#Adding the first tab
self.tabBar.addTab("tab1")
self.tabBar.setTabText(0,"TAB1")
#Adding the second Tab
self.tabBar.addTab("tab2")
self.tabBar.setTabText(1,"TAB2")
self.tabBar.setMovable(True)
#Adding the tabbar to the tabwidget
self.setTabBar(self.tabBar)
#The widget intended for tab1
self.widgetforTab1=QtGui.QWidget()
self.addTab(self.widgetforTab1,"")
self.buttonForTab1=QtGui.QPushButton(self.widgetforTab1)
self.buttonForTab1.setText("Button in Tab1")
#The widget intended for tab2
self.widgetForTab2=QtGui.QWidget()
self.addTab(self.widgetForTab2,"")
self.labelForTab2=QtGui.QLabel(self.widgetForTab2)
self.labelForTab2.setText("Label in Tab2")
self.setCurrentIndex(0)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
ui = Ui_TabWidget()
ui.show()
sys.exit(app.exec_())
The output for the second program was horrible.. I got four with first two tabs with no tab text and the tabs had Button in Tab1,Label in Tab2,Label in Tab2 and Label in Tab2 respectively.. Can you tell me why this is happening??? What should i do to solve this problem???