PyQt를 이용하여 클릭을 하면 파일을 선택할 수 있는 창을 여는 코드입니다.
import sys
from PyQt5.QtWidgets import *
필요한 모듈을 가져옵니다.
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
클래스를 만들고 시작하면 setupUI함수를 불러올 수 있도록 합니다.
def setupUI(self):
self.setGeometry(800, 200, 300, 300)
self.setWindowTitle('File Open Test')
UI 창 크기와 위치를 설정하고 타이틀도 적습니다.
self.pushButton = QPushButton('File Open')
self.pushButton.clicked.connect(self.pushButtonClicked)
self.label = QLabel()
pushbutton을 만들고 'pushButtonClicked'라는 함수와 연결합니다.
layout = QVBoxLayout()
layout.addWidget(self.pushButton)
layout.addWidget(self.label)
self.setLayout(layout)
QVBoxLayout()을 사용하여 수직으로 창 크기가 변경되어도 레이블이나 푸쉬버튼 배열은 비율이 유지되게 합니다.
def pushButtonClicked(self):
fname = QFileDialog.getOpenFileName(self)
self.label.setText(fname[0])
푸쉬버튼을 눌렀을때 함수를 작성합니다. 클릭하면 레이블에 파일 위치가 나오게 합니다.
if __name__=='__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
app.exec_()
메인을 정해줍니다.
아래는 전체 코드입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import sys
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setupUI()
def setupUI(self):
self.setGeometry(800, 200, 300, 300)
self.setWindowTitle('File Open Test')
self.pushButton = QPushButton('File Open')
self.pushButton.clicked.connect(self.pushButtonClicked)
self.label = QLabel()
layout = QVBoxLayout()
layout.addWidget(self.pushButton)
layout.addWidget(self.label)
self.setLayout(layout)
def pushButtonClicked(self):
fname = QFileDialog.getOpenFileName(self)
self.label.setText(fname[0])
if __name__=='__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
app.exec_()
|
cs |
아래는 실행 화면입니다.
'파이썬(Python) > 파이썬 GUI(PyQt5 & tkinter)' 카테고리의 다른 글
PyQt5 - (Qt designer) QFileDialog 를 이용하여 여러파일 이름 출력 (0) | 2020.12.17 |
---|---|
PyQt5 - (qt designer) 간단한 MainWindow 만들기 (0) | 2020.12.16 |
PyQt5 - QTableWidget(테이블 위젯) 사용하기 2 (0) | 2020.12.14 |
PyQt5 - QTableWidget(테이블 위젯) 사용하기 (0) | 2020.12.13 |
PyQt5 - Q CheckBox Widget(체크박스 위젯) (0) | 2020.12.12 |
댓글