2013-02-14 2 views
0

J'essaie de faire une application de test simple dans PySide et je ne comprends vraiment pas ce qui me manque. Voici le code à ce jour:PySide, Connexion erreur PushButton

import sys 
from PySide import QtCore, QtGui 

class IPTest(QtGui.QMainWindow): 
    def __init__(self): 
     super(BartonTest, self).__init__() 
     self.initUI() 

    def initUI(self): 
     lblAddress = QtGui.QLabel("IP Address", self) 
     lineAddress = QtGui.QLineEdit(self) 
     lblPort = QtGui.QLabel("Port Number", self) 
     linePort = QtGui.QLineEdit(self) 
     btnSend = QtGui.QPushButton("Send", self) 
     btnReceive = QtGui.QPushButton("Receive", self) 

     lblAddress.move(30, 20) 
     lblPort.move(30, 60) 
     lineAddress.move(130, 20) 
     linePort.move(130, 60) 
     btnSend.move(30, 100) 
     btnReceive.move(130, 100) 




     self.setGeometry(200, 200, 275, 150) 
     self.setWindowTitle('Send/Receive TCP Test Program') 
     self.show() 

    def sendData(self): 
     fileName, _ = QtGui.QFileDialog.getOPenFileName(self, 'Open CNC Program') 
     self.data = open(fileName, 'r') 



def main(): 
    app = QtGui.QApplication(sys.argv) 
    bt = IPTest() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

Maintenant ce que je veux faire est de connecter simplement un événement au Pushbutton. La documentation de Qt me dit tout ce que je dois faire est la suivante:

btnSend.clicked.connect(self.sendData) 

PyCharm dit qu'il ne peut pas trouver la référence en cliquée et l'exception que je reçois est

TypeError: native Qt signal is not callable 

Je suis assez (facilement) déconcerté.

+0

qui ressemble à droite. Pouvez-vous poster exactement ce que vous faisiez qui ne fonctionnait pas? – tacaswell

+0

Je suppose que vous avez oublié la partie '.connect' et avez fait' btnSend.clicked (self.sendData) '. Cela vous donnerait l'erreur que vous avez. – Avaris

Répondre

0

Les travaux suivants correctement pour moi:

import sys 
from PySide import QtCore, QtGui 

class IPTest(QtGui.QMainWindow): 
    def __init__(self): 
     super(IPTest, self).__init__() 
     self.initUI() 

    def initUI(self): 
     lblAddress = QtGui.QLabel("IP Address", self) 
     lineAddress = QtGui.QLineEdit(self) 
     lblPort = QtGui.QLabel("Port Number", self) 
     linePort = QtGui.QLineEdit(self) 
     btnSend = QtGui.QPushButton("Send", self) 
     btnReceive = QtGui.QPushButton("Receive", self) 

     lblAddress.move(30, 20) 
     lblPort.move(30, 60) 
     lineAddress.move(130, 20) 
     linePort.move(130, 60) 
     btnSend.move(30, 100) 
     btnReceive.move(130, 100) 

     btnSend.clicked.connect(self.sendData) 
     self.setGeometry(200, 200, 275, 150) 
     self.setWindowTitle('Send/Receive TCP Test Program') 
     self.show() 

    def sendData(self): 

     fileName, _ = QtGui.QFileDialog.getOpenFileName(self, 'Open CNC Program') 
     if len(fileName) > 0: 
      self.data = open(fileName, 'r') 
+0

Hmm, c'est étrange. Doit être quelque chose de stupide que j'ai oublié. Je viens de copier et coller le vôtre et cela a fonctionné comme prévu. Merci pour votre temps – Dan

+0

@Dan notez également le changement dans 'SendData' afin qu'il ne gonfle pas si vous cliquez sur 'cancel' dans la boîte de dialogue;) Vous avez également eu une faute de frappe dans l'appel' Super' qui fait référence à 'BartonTest' – tacaswell