파이썬 클릭버튼 이벤트발생시 클릭버튼의 이름을 가져오고싶습니다.

조회수 2222회

버튼을 눌렀을때 어떤 버튼이 눌렸는지 알기위해서 버튼 이름을 가져오고싶습니다. 버튼 누름-> TextReadBt에 버튼이름 넘긴후 -> TextReadBT에서 if문으로 어떤 버튼이 눌렸는지 확인하고 싶은대 구글링을 해봐도 어떤방식으로 접근해야될지 몰라서 여기에 질문올립니다.

        self.CPUBt.clicked.connect(self.TextReadBt)
        self.MainBordBt.clicked.connect(self.TextReadBt)
        self.RamBt.clicked.connect(self.TextReadBt)
        self.GPUBt.clicked.connect(self.TextReadBt)
        self.SSDBt.clicked.connect(self.TextReadBt)
        self.HDDBt.clicked.connect(self.TextReadBt)
        self.CaseBt.clicked.connect(self.TextReadBt)
        self.PowerBt.clicked.connect(self.TextReadBt)
 def TextReadBt(self):


        ua = UserAgent()
        headers = {"User-Agent":ua.random}
        response = requests.get(self.CPUPlaintText.toPlainText(),headers = headers)
        html = response.text
        soup = BeautifulSoup(html,"html.parser")

        for lowest in soup.select('em[class=prc_c]'):
            print (lowest.text)
            self.CPUAddText.setPlainText(lowest.text)
            break

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 멈추는 이유는 모르겠네요. 이벤트 코드는 아래의 코드를 참고하시기 바랍니다.

    ui 와 실제 로직은 분리하시기 바랍니다. 이벤트 핸들러에서 작업 로직을 작성하지 말라는 이야기입니다. 그래야 재활용하기가 용이해지고 ui 테스트 하기도 용이해집니다.

    import sys
    from PyQt5.QtCore import pyqtSlot, Qt
    from PyQt5.QtWidgets import *
    from PyQt5.QtGui import *
    
    class MyForm(QWidget):
        def __init__(self, parent=None):
            super().__init__(parent)
            self.setupUI(parent)
    
        def setupUI(self, parent):
            self.vbox = QVBoxLayout()
            self.but1 = QPushButton('button1')
            self.but2 = QPushButton('button2')
            self.but1.clicked.connect(self.clicked_func)
            self.but2.clicked.connect(self.clicked_func)
            self.vbox.addWidget(self.but1)
            self.vbox.addWidget(self.but2)
            self.setLayout(self.vbox)
    
        @pyqtSlot()
        def clicked_func(self):
            widget = self.sender()
            t = widget.text()
            QMessageBox.information(self, t, t)
    
    class MyMain(QMainWindow):
        def __init__(self, parent=None):
            super().__init__(parent)
            form = MyForm(self)
            self.setCentralWidget(form)
    
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        mywindow = MyMain()
        mywindow.show()
        app.exec_()
    
  • TextReadBt 함수의 self 에서 얻을 수 있습니다.

    self.sender() 로 호출한 위젯을 얻을 수 있습니다.

    def TextReadBt(self):
        widget = self.sender()
        button_text = widget.text()
    
    • 입력하고나서 프로그램이 멈춰버리는대 뭐때문에 그럴까요? 오류도 안뜨고 그상태에 응답없음떠버리네요 ㅠㅠ 알 수 없는 사용자 2019.12.19 23:03

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)