【问题标题】:PyQt4 QTabWidget TAB CHANGE....currentChange(int) does not workPyQt4 QTabWidget TAB CHANGE....currentChange(int) 不起作用
【发布时间】:2013-06-11 16:08:28
【问题描述】:

我的 QTabWidget 有一个大问题。

我有一个小示例程序,其中更改选项卡会给我一个带有“当前选项卡索引:...”的消息框。当我更改选项卡时,它工作得非常好:

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()
    “

现在我的问题:

我在 PyQT4 中使用 QT Designer 创建了一个 GUI,称为“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_())

我只是不明白出了什么问题。 我的小示例程序运行良好。 我在我的主程序中做同样的事情。 Python没有给我任何错误,但在更改选项卡时根本不显示弹出消息窗口。 我无法调试,因为没有引起错误。

感谢您的帮助!

问候 A.纽梅尔

【问题讨论】:

    标签: python-2.7 pyqt4 qtabwidget


    【解决方案1】:

    试试这个:

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

    代替这一行:

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

    【讨论】:

      猜你喜欢
      • 2020-04-19
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      相关资源
      最近更新 更多