다양한 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_()
[PySide6] QDialog 창 with Modal/Modaless (0) | 2021.09.01 |
---|---|
[PySide6] QMainWindow 사용하기 (0) | 2021.09.01 |
[PySide6] Table Widget을 사용하여 Data 출력하기 (0) | 2021.09.01 |
[PySide6] Dialog Application 생성하기 (0) | 2021.08.31 |
[PySide6] 버튼 사용하기 #1 (0) | 2021.08.31 |