Its hard to tell exactly what you are doing wrong from that code.
If you download a test mod I posted here:
http://forums.civfanatics.com/showthread.php?t=140408
It has a new screen (with tab) added to the foreign advisor.
In it the InterfaceScreen function sets up the basic things about the screen, and then calls the DrawContents function.
One of the first things that function does is to see what screen should be showing with the following code:
if (self.iScreen == FOREIGN_TEST):
self.drawtest()
elif (self.iScreen == FOREIGN_RELATIONS_SCREEN):
self.drawRelations(bInitial)
elif (self.iScreen == FOREIGN_ACTIVE_TRADE_SCREEN):
self.drawActive()
else:
self.drawPossibleDeals()
My new screen is the FOREIGN_TEST one. So if that should be showing it will call the drawtest function. In this it first adds the main panel then I add some more widgets (not tabs), then it returns back to the DrawContents function.
Once back in the drawContents function, the tabs are added. My new tab is the last one to be added and the code for it is:
szActivId = self.getNextWidgetName()
if (self.iScreen != FOREIGN_TEST):
screen.setText(szActivId, "", u"<font=4>" + localText.getText("TXT_KEY_FOREIGN_TEST", ()).upper() + u"</font>", CvUtil.FONT_LEFT_JUSTIFY, xLink-50, self.Y_LINK, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_FOREIGN_ADVISOR, FOREIGN_TEST, -1)
else:
screen.setText(szActivId, "", u"<font=4>" + localText.getColorText("TXT_KEY_FOREIGN_TEST", (), gc.getInfoTypeForString("COLOR_YELLOW")).upper() + u"</font>", CvUtil.FONT_LEFT_JUSTIFY, xLink-50, self.Y_LINK, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_FOREIGN_ADVISOR, -1, -1)
xLink += self.DX_LINK