상세 컨텐츠

본문 제목

[PySide6] 버튼 사용하기 #2

pyside6

by 빨간눈동자 2021. 9. 1. 01:27

본문

반응형

다양한 button을 사용해보기 위해 notepad++ 의 찾기 Dialog의 일부분 (노란색 표시) 을 구현해보자.

 

QGroupBox()QVBoxLayout() 사용법에 대해 눈여겨 보길 바란다. 

from PySide6.QtWidgets import (QApplication, QWidget, QPushButton, QCheckBox, QRadioButton, QVBoxLayout, QGroupBox)
import sys

class MyForm(QWidget): 
    def __init__(self,parent=None):
        QWidget.__init__(self,parent) 
        self.setWindowTitle('Button Demo')                    # MyForm title 설정
        self.button = QPushButton('다음찾기',self)              # "다음 찾기" button 생성
        self.button.clicked.connect(self.okButtonClicked)     # Click 시, 호출될 function 연결
        
        self.checkBox1 = QCheckBox('이전 방향',self)            # "이전 방향" checkbox 생성
        self.checkBox2 = QCheckBox('단어 완전 일치(&W)',self)    # "단어 완전 일치" checkbox 생성
        self.checkBox3 = QCheckBox('대소문자 구분(&C)',self)     # "대소문자 구분" checkbox 생성
        self.checkBox4 = QCheckBox('되돌이 검색(&P)',self)      # "되돌이 검색" checkbox 생성
        
        self.checkBox1.toggled.connect(self.A)                # toggle 시, 호출될 function(A) 연결
        self.checkBox2.toggled.connect(self.B)                # toggle 시, 호출될 function(B) 연결
        self.checkBox3.toggled.connect(self.C)                # toggle 시, 호출될 function(C) 연결
        self.checkBox4.toggled.connect(self.D)                # toggle 시, 호출될 function(D) 연결
        
        box = QGroupBox("찾기 모드",self)                       # Groupbox 생성
        self.button1 = QRadioButton("일반", box)               # "일반" radio button 생성
        self.button2 = QRadioButton("확장 (\\n, \\r, \\t, \\0, \\x...)", box) # "확장" radio button 생성
        self.button3 = QRadioButton("정규 표현식(&E)", box)     # "정규 표현식" radio button 생성
		
        groupBoxLayout = QVBoxLayout()                        # Vertical layout 생성
        groupBoxLayout.addWidget(self.button1)                # layout에 radio button1 추가
        groupBoxLayout.addWidget(self.button2)                # layout에 radio button2 추가
        groupBoxLayout.addWidget(self.button3)                # layout에 radio button3 추가
        box.setLayout(groupBoxLayout)                         # box의 layout을 groupboxLayout으로 설정

        self.button1.toggled.connect(self.onFind1)
        self.button2.toggled.connect(self.onFind2)
        self.button3.toggled.connect(self.onFind3)
		
        mainlayout = QVBoxLayout(box)                            # vertical layout 생성
        mainlayout.addWidget(self.button)                     # 해당 layout에 button 추가
        mainlayout.addWidget(self.checkBox1)                  # 해당 layout에 checkbox1 추가
        mainlayout.addWidget(self.checkBox2)                  # 해당 layout에 checkbox2 추가
        mainlayout.addWidget(self.checkBox3)                  # 해당 layout에 checkbox3 추가
        mainlayout.addWidget(self.checkBox4)                  # 해당 layout에 checkbox4 추가
        mainlayout.addWidget(box)                             # 해당 layout에 box 추가
        self.setLayout(mainlayout)                            # MyForm의 layout을 mainlayoutdm으로 설정
		
    def okButtonClicked(self):
        print('okButtonClicked')
    def A(self,toggle):
        print('이전 방향',toggle)			
    def B(self,toggle):
        print('단어 완전 일치',toggle) 	
    def C(self,toggle):
        print('대소문자 구분',toggle)				
    def D(self,toggle):
        print('되돌이 검색',toggle)				
    def onFind1(self,toggle):
        print('일반',toggle) 	
    def onFind2(self,toggle):
        print('확장',toggle) 				
    def onFind3(self,toggle):
        print('정규 표현식',toggle) 
				
if __name__ == '__main__':
	app = QApplication() 
	form = MyForm()
	form.show()
	app.exec_()

반응형

관련글 더보기