2013-02-14 3 views
0

Я пытаюсь сделать простое тестовое приложение в PySide, и я действительно не понимаю, чего у меня нет. Вот код до сих пор:PySide, Подключение ошибки 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() 

Теперь то, что я хочу сделать, это просто подключить событие к Кнопочному. документация Qt говорит мне все, что мне нужно сделать, это:

btnSend.clicked.connect(self.sendData) 

PyCharm говорит, что не может найти ссылку на щелкнуло, и исключение я получаю

TypeError: native Qt signal is not callable 

Я довольно (легко) озадачен.

+0

, который выглядит правильно. Можете ли вы опубликовать то, что вы делали, что не работает? – tacaswell

+0

Я думаю, вы забыли '.connect' часть и сделали' btnSend.clicked (self.sendData) '. Это даст вам ошибку. – Avaris

ответ

0

Следующая правильно работает для меня:

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

Хм, это странно. Должно быть, что-то глупо я забыл. Я просто скопировал и вставил ваш, и он работал, как ожидалось. Спасибо за ваше время – Dan

+0

@ Dan также обратите внимание на изменение в 'SendData', чтобы оно не взорвалось, если вы нажали« отменить »в диалоговом окне;) У вас также была опечатка в вызове' Super', который ссылается на 'BartonTest' – tacaswell

Смежные вопросы