0. 한글처리
- 참조url : https://syriusta.tistory.com/14
- 파이썬 코드 첫문장에 아래와 같이 한다.
#!C:\Python34\python.exe
#-*- coding: utf-8 -*- <-- utf-8로 문자를 처리하는 부분.
1. app.exec_();
- 이벤트 루프 (Event Loop)
- QApplication클래스의 객체를 생성한 후 exec_ 메서드를 호출하는 순간 생성된다.
- 한번 생성된 이벤트 루프는 사용자가 윈도우를 닫을 때까지 실행되면서 위젯에서 발생한 시그널을
처리하는 슬롯을 호출하는 역할을 한다.
2. Widget(위젯)
- 사용자 인터페이스(UI, 화면)을 구성하는 핵심 요소이다.
- QT Designer 에서 사용되는 객체(label, edit, button...)들을 의미한다.
3. slot (슬롯)
- PyQt에서는 특정 시그널(event)이 발생했을 때 호출되는 함수 또는 메서드를 slot이라고 한다.
4. dialog (다이알로그)
text,ok = QInputDialog.getInt(self, "나이", "나이를 입력하시오."); #int형
text,ok = QInputDialog.getDouble(self, "나이", "나이를 입력하시오."); #double 형
text,ok = QInputDialog.getText(self, "나이", "나이를 입력하시오."); #문자형
text,ok = QInputDialog.getItem(self, "나이", "나이를 입력하시오."); #항목 선택
4.1 MessageBox (메세지 box)
QMessageBox.about(self, "제목명", "상세내용"):
5. connect
- 예) btn.clicked.connect(clicked_slot);
- 시그널(event)과 슬롯(function, method)을 이벤트 루프를 생성하기 전에 연결(connect)한다.
. 버튼 클릭 시 clicked_slot function을 호출 하도록 연결(connection)을 설정한다.
. 설정 후 사용자가 btn 을 클릭 시 clicked_slot function을 호출 및 수행 한다.
6. class
- class name(inherit_Calssname)
- name : class name
- inherit_Calssname : 상속class name
7. __init__
- class 생성자 method
- 예) def __init__(self)
super().__init__();
8. 외부 모듈
1. 브라우져 실행하기
- import webbrowser
url = "http://naver.com";
webbrowser.open(url);
8. visible 객체 생성 1
1. button생성
- btnSave = QPushButton("저장", self); #버튼 객체 생성
btnSave.move(20, 50); #move() : 버튼 위치 이동
btnSave.clicked.counect(self.btnSave_clicked); #버튼 slot 연결
2. Label 생성
- self.label = QLabel("Message : ", self);
self.label.move(20, 20);
self.label.resize(200, 20)
3. Edit 생성
- self.lineEdit = QLineEdit("", self);
self.lineEdit.move(20, 20);
self.lineEdit.textChanged.connect(self.lineEditChanged); #텍스트값이 변경될 때 발생
self.lineEdit.returnPressed.connect(self.lineEditReturnPressed); #에터 키를 눌렀을 때 발생
4. Radio button 생성
- 생성
self.radio1 = QRadiobutton("항목1", self)
self.radio1.move(20, 20);
self.radio1.setChecked(True);
self.radio1.clicked.connect(self.radioButton_clicked);
self.radio1 = QRadiobutton("항목1", self)
self.radio2.move(20, 40);
self.radio2.setChecked(True);
self.radio2.clicked.connect(self.radioButton_clicked);
self.radio2 = QRadiobutton("항목2", self)
- 클릭된 radion 알아내기
def radioButton_clicked(self):
msg = "";
if self.radio1.isChecked():
msg = "항목1 선택";
if self.radio2.isChecked():
msg = "항목2 선택";
5. checkbox 생성
- 생성
self.checkBox1 = QCheckBox("항목1", self);
self.checkBox1.move(20, 20);
self.checkBox1setChecked(True);
self.checkBox1.clicked.connect(self.checkBoxStateChanged);
self.checkBox2 = QCheckBox("항목2", self);
self.checkBox2.move(20, 40);
self.checkBox2setChecked(True);
self.checkBox2.clicked.connect(self.checkBoxStateChanged);
- 클릭된 radion 알아내기
def radioButton_clicked(self):
msg = "";
if self.checkBox1.isChecked():
msg = "항목1 선택";
if self.checkBox2.isChecked():
msg = "항목2 선택";
6. QGroupBox 생성
- 생성
groupBox = QGroupBox("항목 그룹", self);
groupBox.move(10, 10);
groupBox.resize(150, 80);
- 참고
radio을 QGroupBox위에 위치 하기 위해서는 QGroupBox를 먼저 생성 후 radio을 만들어야 한다.
순서가 바뀐 경우 radio button이 여러게 동시 선택된다.
7. QSpinBox 생성
- 생성
self.spinBox = QSpinBox(self);
self.spinBox.move(40, 20);
self.spinBox.resize(60, 20);
self.spinBox.valueChanged.connect(self.spinBoxValueChagned);
- 값 얻기
def self.spinBoxValueChagned(self):
val = self.spinBox.value();
9. visible 객체 생성 2
0. 참고url : https://m.blog.naver.com/sisosw/221419144691
1. QTableWidget 생성
- 생성
self.tableWidget = QTableWidget(self);
self.tableWidget.resize(400, 300);
self.tableWidget.setRowCount(2);
self.tableWidget.setColumnCount(2);
self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers);
self.tableWidget.setItem(0, 0, QTableWidgetItem("(0,0)"));
self.tableWidget.setItem(0, 1, QTableWidgetItem("(0,1)"));
self.tableWidget.setItem(1, 0, QTableWidgetItem("(1,0)"));
self.tableWidget.setItem(1, 1, QTableWidgetItem("(1,1)"));
- Head Lable 등록
column_headers = ["학번", "이름", "학년"];
self.tableWidget.setHorizontalHeaderLables(column_headers);
- row별 값 set
students = { "no" : [ "2018001", "2018002", "2018003" ],
"name" : [ "홍길동", "이순신", "김성철" ],
"group" : [ "1학년", "2학년", "3학년" ] };
column_idx_lookup = { "no" : 0, "name" : 1, "group" : 2 };
for k, v in students.items():
col = column_idx_lookup[k];
print(k, v, col);
for row, val in enumerate(v):
item = QTableWidgetItem(val);
if col == 2:
item.setTextAlignment(Qt.AlignVCenter | Qt.AlignRight);
self.tableWidget.setIem(row, col, item);
self.tableWidget.resizeColumnsToConTents();
self.tableWidget.resizeRowsToContents();
'Web. 기타 언어 > android관련 (python, java 등)' 카테고리의 다른 글
1. python 용어. 정의. 관련tool. library (0) | 2020.05.07 |
---|