파이썬 클릭버튼 이벤트발생시 클릭버튼의 이름을 가져오고싶습니다.
조회수 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()
댓글 입력