1. 파이썬 GUI로 PyQt5 모듈을 가장 많이 사용합니다. 일단 예브게 생겼고 기능이 많거든요.
설치는 이곳에 친절히 설명되어 있습니다.
https://wikidoc.tistory.com/13
파이썬 가상 환경 만들기
import sys from PyQt5.QtWidgets import QApplication, QWidget # 외부 라이브러리를 쓰려고 하면 파이썬의 유용한 라이브러리가 참 많거든요. Flask, Math, beautiful soup 등 등. 자체 내장되어 있는 라이브러리가 아니
wikidoc.tistory.com
2. PyQt5 모듈 설명이 잘되어 있어요.
https://codetorial.net/pyqt5/index.html
PyQt5 Tutorial - 파이썬으로 만드는 나만의 GUI 프로그램 - Codetorial
PDF & 예제 파일 이 튜토리얼의 내용을 오프라인과 모바일에서 더 편리하게 볼 수 있도록 약 280페이지 분량의 pdf ebook으로 제작하였습니다. PyQt5 튜토리얼 - pdf ebook. 온라인 서점을 통해서 구입이
codetorial.net
https://wikidocs.net/book/2165
PyQt5 Tutorial - 파이썬으로 만드는 나만의 GUI 프로그램
## 소개 - 한국어로 되어있는 PyQt5 자료가 많지 않아서 아래의 여러 튜토리얼과 강의의 예제를 정리하며 시작했습니다. - **PyQt5의 설치**부터 시작해서, **…
wikidocs.net
3. 이제 메인 창을 띄워볼까요?
import sys
from PyQt5.QtWidgets import QApplication, QWidget
class AppTest(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('메인창 테스트')
self.move(300,300) #메인 창의 위치
self.resize(400,200) #창의 크기
self.show()
if __name__=='__main__':
app = QApplication(sys.argv)
ex = AppTest()
sys.exit(app.exec_())
__init__는 엔트리 포인트인 __name__=='__main__'과 한 쌍이죠.
아래 사이트에 설명이 잘 나와 있어요.
__init__과 self
`__init__`은 파이썬에서 클래스의 생성자(constructor) 메소드입니다. 클래스의 인스턴스를 생성할 때 자동으로 호출되며, 인스턴스가 생성될 때 초기화 작업을 수행하…
wikidocs.net
아주 깔끔한 메인 창이 만들어졌습니다.
4. 메인 창 하단에 상태바를 표시해보면
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow
class AppTest(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.statusBar().showMessage('하단 상태줄')
self.setWindowTitle('메인창 테스트')
self.setGeometry(300,300,400,200)
# self.move(300,300) #메인 창의 위치
# self.resize(400,200) #창의 크기
self.show()
if __name__=='__main__':
app = QApplication(sys.argv)
ex = AppTest()
sys.exit(app.exec_())
5. 버튼 클릭 시 메인 창이 닫히는 걸 만들겠습니다.
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import QCoreApplication
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
class AppTest(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
btn = QPushButton('버튼',self)
btn.move(150,100) # 버튼의 위치
btn.resize(100,50) # 버튼 크기
btn.clicked.connect(QCoreApplication.instance().quit)
self.setWindowTitle('버튼 테스트')
self.setWindowIcon(QIcon('penguin-icon.ico'))
self.move(300,300) #상단에서 300px. 왼쪽에서 300px
self.resize(400,200) #창의 크기
self.show()
if __name__=='__main__':
print(sys.argv)
app = QApplication(sys.argv)
ex = AppTest()
sys.exit(app.exec_())
5. 툴팁이라고 풍선 도움말 같은 걸 만들어보죠.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QToolTip
from PyQt5.QtGui import QFont
class App(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('맑은고딕', 12))
self.setToolTip('여긴 배경인데')
button=QPushButton('버튼', self)
button.setToolTip('이것은 툴팁이라고 풍선 도움말 같은 거')
button.move(100,100)
button.resize(button.sizeHint())
self.setWindowTitle('툴팁 테스트')
self.setGeometry(400,400,300,300)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
view = App()
sys.exit(app.exec_())
6. 버튼 클릭 시 창이 뜨는 것
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QMessageBox, QMainWindow
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
btn=QPushButton('버튼',self)
btn.move(10,10) #버튼 위치
self.resize(400,200) #창의 크기
btn.clicked.connect(self.event1)
btn.clicked.connect(event2)
self.show()
def event1(self):
eve=QMessageBox(self)
eve.setText('자네가 나를 눌렀구먼')
eve.show()
def event2():
print('버튼 클릭 시 콘솔에 출력하는 내용')
if __name__ =='__main__':
app=QApplication(sys.argv)
ex=MyWindow()
sys.exit(app.exec_())
비쥬얼 스튜디오 하단에는 이렇게 출력됩니다.
7. 메뉴바를 만들어볼까요.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow,QAction
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import QCoreApplication
class AppTest(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
menubar = self.menuBar()
menu1 = menubar.addMenu("파일")
menu2 = menubar.addMenu("편집")
menu3 = menubar.addMenu("선택영역")
loadFile = QAction('불러오기',self)
saveFile = QAction('저장하기',self)
quitApp = QAction('종료하기',self)
quitApp.setShortcut('Ctrl+Q')#단축키 설정
quitApp.setStatusTip('하단 도움말')
#클릭 시 동작 추가
loadFile.triggered.connect(self.add_open)
saveFile.triggered.connect(self.add_save)
quitApp.triggered.connect(QCoreApplication.instance().quit)
menu1.addAction(loadFile)
menu1.addAction(saveFile)
menu1.addAction(quitApp)
self.statusBar().showMessage('하단 상태줄')
self.setWindowTitle('메인창 테스트')
self.setGeometry(300,300,400,200) #메인창의 위치와 크기
self.show()
def add_open(self):
pass
def add_save(self):
pass
if __name__=='__main__':
app = QApplication(sys.argv)
ex = AppTest()
sys.exit(app.exec_())
7. 메뉴에 기능을 넣었습니다.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QWidget
from PyQt5.QtCore import QCoreApplication
class App(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
menubar = self.menuBar()
menu1 = menubar.addMenu('파일')
menu2 = menubar.addMenu('편집')
menu3 = menubar.addMenu('선택 영역')
loadFile = QAction('불러오기', self)
saveFile = QAction('저장하기',self)
quitFile = QAction('종료하기',self)
loadFile.triggered.connect(self.openfile)
saveFile.triggered.connect(self.savefile)
quitFile.triggered.connect(QCoreApplication.instance().quit)
menu1.addAction(loadFile)
menu1.addAction(saveFile)
menu1.addAction(quitFile)
self.setWindowTitle('테스트')
# self.setWindowIcon('penguin-icon.ico')
self.move(600,400)
self.resize(400,300)
self.show()
def openfile(self):
pass
def savefile(self):
pass
if __name__ == '__main__':
app=QApplication(sys.argv)
view=App()
sys.exit(app.exec_())
'파이썬 > 파이썬 GUI' 카테고리의 다른 글
로또 번호가 생성되는 윈도우 창 만들기 (0) | 2024.04.03 |
---|---|
엄청 쉬운 파이썬 GUI (0) | 2024.04.02 |