2013-06-11 3 views
1

У меня есть огромная проблема с моим QTabWidget.PyQt4 QTabWidget TAB CHANGE .... currentChange (int) не работает

У меня есть небольшой пример Programm, где меняющаяся Вкладка дать мне окно сообщения с «текущим индексом вкладки: ....», Когда я изменить вкладку, которая работает АБСОЛЮТНО FINE:

from PyQt4 import QtGui 
from PyQt4 import QtCore 
from PyQt4.QtCore import pyqtSlot,SIGNAL,SLOT 
import sys 

class myTabWidget(QtGui.QTabWidget): 

    def tabChangedSlot(self,argTabIndex): 
    QtGui.QMessageBox.information(self,"Tab Index Changed!", 
     "Current Tab Index: "+QtCore.QString.number(argTabIndex)); 




def main():  
    app  = QtGui.QApplication(sys.argv) 
    tabWidget  = myTabWidget() 
    tabWidget.addTab(QtGui.QWidget(),"1"); 
    tabWidget.addTab(QtGui.QWidget(),"2"); 
    tabWidget.addTab(QtGui.QWidget(),"3"); 

    #Resize width and height 
    tabWidget.resize(300,120)  
    tabWidget.setWindowTitle('QTabWidget Changed Example') 

    tabWidget.connect(tabWidget, 
     SIGNAL("currentChanged(int)"),tabWidget,SLOT("tabChangedSlot(int)")) 


tabWidget.show()  
sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 
    “ 

Теперь мои Проблема:

Я создал графический интерфейс с QT Designer в PyQT4, который называется «abaqusian». QTabWidget называется «Ui_AbaqusianV1()».

Проблема в том, что у меня есть огромные трудности с испусканием сигнала «currentchanged (int)». Всплывающее окно с индексом «Текущая вкладка: ...» просто не отображается при изменении вкладки.

Кроме того, программа знает индекс вкладки, потому что индекс вкладки, вызываемый функцией «ongenoptions_savebutton (self)», напечатан абсолютно правильно ......... что не так ???!

Вот код основной программы:

from PyQt4 import QtCore 
from PyQt4 import QtGui 
import sys,os 
from PyQt4.QtCore import pyqtSlot,SIGNAL,SLOT 
from Tkinter import Tk 
from tkFileDialog import askopenfilename 
from tkFileDialog import askdirectory 
import Tkconstants 


class Ui_AbaqusianV1(QtGui.QTabWidget): 
    def setupUi(self, AbaqusianV1): 
     AbaqusianV1.setObjectName(_fromUtf8("AbaqusianV1")) 
     AbaqusianV1.resize(567, 530) 
     ..... 
     ..... 
     self.retranslateUi(AbaqusianV1) 
     ..... 
     QtCore.QObject.connect(self.genoptions_savebutton, QtCore.SIGNAL("clicked()"), 
      self.ongenoptions_savebutton) 

     ...... 
     TableuGenerale=Ui_AbaqusianV1() 

     QtCore.QObject.connect(TableuGenerale,QtCore 
      .SIGNAL(_fromUtf8("currentChanged(int)")), 
      self.tabChangedSlot) 

    def tabChangedSlot(self,argTabIndex): 
    QtGui.QMessageBox.information(self, 
       "Tab Index Changed!", 
       "Current TabIndex:"+QtCore.QString.number(argTabIndex)); 



    def ongenoptions_savebutton(self): 
    # Daten auslesen 
    d = {} 
    self.TableuGenerale=Ui_AbaqusianV1() 
    print "\n" 
    print "*****************************************************************" 
    print "GENERAL OPTIONS:" 
    print "\n" 
    print "Project Name: %s" % self.projectname.text() 
    print "Save location Abaqusian: %s" % abaqusian_dir 
    print "Save location Inp. Files: %s" % inpfiles_dir 
    print "\n" 
    print "current tab index is: %s" % self.TableuGenerale.currentIndex() 
    print "GENERAL OPTIONS ----> SAVED" 
    print "*****************************************************************" 

..... 
..... 
..... 
if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    AbaqusianV1 = QtGui.QTabWidget() 
    ui = Ui_AbaqusianV1() 
    ui.setupUi(AbaqusianV1) 
    AbaqusianV1.show() 
    sys.exit(app.exec_()) 

Я просто Don `T увидеть, что это неправильно. Моя небольшая программа-образец работает нормально. Я делаю то же самое в своей основной программе. Python дает мне NO ERROR, но просто не показывает всплывающее окно-сообщение при изменении вкладки. Я не могу отлаживать, так как нет ошибки.

Спасибо за помощь!

С уважением А. Neumeir

ответ

0

Попробуйте это:

QtCore.QObject.connect(self, QtCore.SIGNAL(_fromUtf8("currentChanged(int)")), self.tabChangedSlot) 

вместо этой строки:

QtCore.QObject.connect(TableuGenerale, QtCore.SIGNAL(_fromUtf8("currentChanged(int)")), self.tabChangedSlot)