2017-12-25 6 views
0

PyQt4를 기반으로 PyQt를 사용하고 있습니다. PyCharm 2017.3을 사용하고 있습니다. 내 파이썬 버전은 3.4입니다.
QLineEdit에서 콘텐츠를 캡처하기 위해 마우스를 클릭 할 때 나타나는 신호를 연결하려고합니다. 내가 실행할 때AttributeError : 'builtin_function_or_method'객체에 '연결'속성이 없습니다.

class HelloWorld(QMainWindow, tD_ui.Ui_MainWindow): 

    # defining constructor 
    def __init__(self): 

     QMainWindow.__init__(self) 

     self.setupUi(self) 
     self.getContent() 
     self.putValues() 
     self.setWindowTitle("Downloader") 
     self.pushButton.mousePressEvent.connect(self.getContent) 


는 그래서 code.The 다음과 같은 오류가

Traceback (most recent call last): 
    File "C:/Project/Downloader/Implement.py", line 113, in <module> 
    helloworld = HelloWorld() 
    File "C:/Project/Downloader/Implement.py", line 18, in __init__ 
    self.pushButton.mousePressEvent.connect(self.getContent) 
AttributeError: 'builtin_function_or_method' object has no attribute 'connect' 

PS->

답변

3

mousePressEvent 당신 때문에 신호없는 솔루션에서 기존 코드를 피하기 위해 시도하십시오 나타 연결을 사용해서는 안되며 clicked 신호를 사용해야합니다.

self.pushButton.clicked.connect(self.getContent) 
(210)

플러스 : Qt는에서

는 따라서 PyQt는 들어, 신호 및 이벤트가, 신호가 방출 및 이벤트 버튼의 경우, 덮어 쓰기해야하며, 클릭 한 작업은 자연에 내재되어 이 신호가 만들어졌습니다, 그래서 그 논리는하지만, QLabel의 경우 그 신호가없는하지만 아래 표와 같이 우리는 그 신호를 생성하는 mousePressEvent 이벤트를 사용할 수 있습니다

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 

class Label(QLabel): 
    clicked = pyqtSignal() 
    def mousePressEvent(self, event): 
     self.clicked.emit() 

if __name__ == "__main__": 
    import sys 
    app = QApplication(sys.argv) 
    w = Label("click me") 
    w.clicked.connect(lambda: print("clicked")) 
    w.show() 
    sys.exit(app.exec_()) 
+0

귀하의 솔루션 worked.Thank을 . mousePressEvent가 clicked.What func와 다른 점을 이해할 수 없습니다. 그것은 그것을 위해 예비되어 왔으며 – royatirek

관련 문제