2012-08-24 55 views
1

我試圖將按鈕信號連接到我創建的可調用對象,但由於某種原因,此錯誤不斷彈出。我檢查過,以確保QtCore已導入...我還缺少什麼?PyQt 4 - 全局名稱'SIGNAL'未定義

示例代碼:

from PyQt4 import QtCore 
from PyQt4 import QtGui 
import sys 

class guiFindFiles(QtGui.QWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 

     #Create window 
     self.setFixedSize(400,180) 
     self.setWindowTitle("Choose the files to use") 

     #Create all layouts to be used by window 
     self.windowLayout = QtGui.QVBoxLayout() 
     self.fileLayout1 = QtGui.QHBoxLayout() 
     self.fileLayout2 = QtGui.QHBoxLayout() 
     self.fileLayout3 = QtGui.QHBoxLayout() 

     #Create the prompt for user to load in the q script to use 
     self.qFileTF = QtGui.QLineEdit("Choose the q script file to use") 
     self.qFileButton = QtGui.QPushButton("Open") 
     self.qFileButton.setFixedSize(100,27) 
     self.fileLayout1.addWidget(self.qFileTF) 
     self.fileLayout1.addWidget(self.qFileButton) 

        #Connect all the signals and slots 
     self.connect(self.qFileButton, SIGNAL("pressed()"), self.loadFile) 

     def loadFile(): 
      fileName = [] 

      selFile = QtGui.QFileDailog.getOpenFileName(self) 
      print selFile 

回答

7

SIGNAL裏面QtCore,所以該行應爲:

self.connect(self.qFileButton, QtCore.SIGNAL("pressed()"), self.loadFile) 

但你真的應該使用the new style connections

self.qFileButton.pressed.connect(self.loadFile) 

,除非你的意思是區分clickpress/release情侶,你最好使用clicked信號:

self.qFileButton.clicked.connect(self.loadFile) 
+0

感謝您的回覆。我嘗試了新的連接方式,效果很好! – Orchainu

1

SIGNAL在裏面QtCore定義,所以你必須,如果你已經導入QtCore整體QtCore命名空間內使用。因此,使用:

QtCore.SIGNAL(...) 

代替:

SIGNAL(...) 

或者你也可以從QtCore導入SIGNAL明確:

from PyQt4.QtCore import SIGNAL 
+0

非常感謝你,這是完全幫助! – Orchainu

+0

@Orchainu,如果答案有幫助 - 將您的問題標記爲已回答,以便可以幫助其他人面臨同樣的問題 –