콤보박스
import sys from PyQt5.QtWidgets import * class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.label1=QLabel('option1',self)#self. 으로 변수 선언 시 내 class인 MyApp 전체에서 Label1이란 변수 사용하고자 할 때. self.label1.move(50,150)#하단에 라벨 생성 cb=QComboBox(self) cb.addItem('option1') cb.addItem('option2') cb.addItem('option3') cb.addItem('option4') cb.move(50,50)#50,50위치에 option1,2,3,4를 항목으로 가진 comboBox생성 #Signal 발생시 (Signal=사용자 검색따위가 발생시) cb.activated[str].connect(self.onActivated)#콤보박스 옵션 선택시 onActivated 호출 self.setWindowTitle('콤보박스') self.setGeometry(1000,300,300,300) self.show() def onActivated(self,text): self.label1.setText(text+' 선택')#콤보박스 선택 시 라벨에 콤보박스 text 나오게 self.label1.adjustSize()#크기 자동조절 if __name__=='__main__': app=QApplication(sys.argv) ex=MyApp() sys.exit(app.exec_()) -------------------------출력------------------------ -------------------------출력------------------------
--> signal(event/콤보박스 항목 변경) 발생 시 slot 함수(개발자가 만든 onActivated함수)를 호출하여 해당 이벤트를 처리함
--> self.Label=QLabel('option1',self)와 같이 self.~ 형태로 변수 선언 시 내가 생성한 class(MyApp) 내부에서 Label1이라는 변수를 자유롭게 사용하겠다는 의미
LineEdit
import sys from PyQt5.QtWidgets import * class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.label1=QLabel(self) self.label1.move(60,40)#해당 위치에 빈 라벨 생성 txtqline=QLineEdit(self)#txtQLineEdit 위젯 생성 txtqline.setEchoMode(2)#qline에 Password 형태로 출력 txtqline.move(60,100) txtqline.textChanged[str].connect(self.onChanged)#txtqline텍스트 바뀌면 onchanged 호출 self.setWindowTitle('LineEdit') self.setGeometry(1000,300,300,300) self.show() def onChanged(self,text):#text바뀌면 onChanged호출 self.label1.setText(text)#txtqline 바뀔때마다 label에 해당 텍스트 뿌려줌 self.label1.adjustSize() if __name__=='__main__': app=QApplication(sys.argv) ex=MyApp() sys.exit(app.exec_()) -------------------------출력------------------------ -------------------------출력------------------------
Pixmap
import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import QPixmap from PyQt5.QtCore import Qt class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): pixmap=QPixmap('./images/cat.png') label_image=QLabel() label_image.setPixmap(pixmap) label_size=QLabel(str(pixmap.width())+'x'+str(pixmap.height())) label_size.setAlignment(Qt.AlignmentFlag.AlignCenter) vbox=QVBoxLayout(self) vbox.addWidget(label_image) vbox.addWidget(label_size) self.setLayout(vbox) self.setWindowTitle('LineEdit') self.setGeometry(1000,300,300,300) self.show() if __name__=='__main__': app=QApplication(sys.argv) ex=MyApp() sys.exit(app.exec_()) -------------------------출력------------------------ -------------------------출력------------------------
dialog
import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.button_dialog=QPushButton('Dialog',self) self.button_dialog.move(30,30) self.button_dialog.clicked.connect(self.onClicked)#signal(event)발생 시 onClicked 호출 self.txtInput=QLineEdit(self) self.txtInput.move(30,60) self.setWindowTitle('Dialog') self.setGeometry(1000,300,300,300) self.show() def onClicked(self): text,ok=QInputDialog.getText(self,'Input Dialog','문자열 입력:') if ok: self.txtInput.setText(str(text)) if __name__=='__main__': app=QApplication(sys.argv) ex=MyApp() sys.exit(app.exec_()) -------------------------출력------------------------ -------------------------출력------------------------
fileDialog + CloseEvent
import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * class MyApp(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.textEdit=QTextEdit() self.setCentralWidget(self.textEdit) self.statusBar() openFile=QAction(QIcon('iot.png'),'Open',self) openFile.setShortcut('Ctrl+O') openFile.setStatusTip('Open New File') openFile.triggered.connect(self.onClicked) menubar=self.menuBar() menubar.setNativeMenuBar(False) filemenu=menubar.addMenu('&File') filemenu.addAction(openFile) self.setWindowTitle('File Dialog') self.setGeometry(1000,300,300,300) self.show() def onClicked(self): fname=QFileDialog.getOpenFileName(self,'Open file','./')#getOpenFileName메소드로 File선택 if fname[0]:#파일을 선택했다면 file = open(fname[0],'r',encoding='utf-8') with file: data=file.read() self.textEdit.setText(data) file.close() QMessageBox.about(self,'성공','로드했습니다') #로드 성공 메시지 출력 def closeEvent(self, event):#closeEvent 재정의 reply = QMessageBox.question(self,'Message','종료됩니다. 종료하시겠습니까?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)#Yes or No / 기본 설정버튼 : NO if reply == QMessageBox.Yes: event.accept() else: event.ignore() if __name__=='__main__': app=QApplication(sys.argv) ex=MyApp() sys.exit(app.exec_()) -------------------------출력------------------------ -------------------------출력------------------------