PyQt5

2020. 11. 24. 22:33·study/python
반응형

 

  • PyQt5는 어플리케이션 프레임워크에 대한 파이썬 버전입니다. Qt는 플랫폼에 관계없이 다양한 기능을 포함하는 C++라이브러리이자 개발툴입니다.
  • PyQt5는 이러한 1000여개의 클래스들을 포함하는 파이썬 모듈의 모음입니다.
  • PyQt5는 윈도우, 리눅스, macOS, 안드로이드, iOS를 지원합니다.
  • PyQt5의 홈페이지에서 최신의 그리고 안정적인 버전의 PyQt5와 최신 버전의 문서를 얻을 수 있습니다.
  • PyQt5 개발자는 GPL과 상업용 라이센스 중 하나를 선택할 수 있습니다.

 

 

 

 

QLabel을 이용해 출력내용 작성

 

 

 

Button

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(150, 250, 350, 350)  # 창의 위치와 크기
        self.setWindowTitle("using Button")
        
        self.UI()
        
    def UI(self):
        self.text=QLabel("text",self)
        enterButton = QPushButton("Enter",self)
        exitButton = QPushButton("Exit",self)
        self.text.move(160,50)
        enterButton.move(100,80)
        exitButton.move(200,80)
        enterButton.clicked.connect(self.enterFunc)
        exitButton.clicked.connect(self.exitFunc)
        self.show()
        
    def enterFunc(self):
        self.text.setText("You Clicked Enter")
        self.text.resize(150,20)

    def exitFunc(self):
        self.text.setText("You Clicked Exit") 
        self.text.resize(150,20)
        
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

 

결과

 

 

LineEdit

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(150, 250, 350, 350)  # 창의 위치와 크기
        self.setWindowTitle("using LineEdit")
        
        self.UI()
        
    def UI(self):
        self.nameTextBox = QLineEdit(self)
        self.nameTextBox.setPlaceholderText("Please enter your name")
        self.nameTextBox.move(120,50)
        self.passTextBox = QLineEdit(self)
        self.passTextBox.setPlaceholderText("Please enter your password")
        self.passTextBox.setEchoMode(QLineEdit.Password)
        self.passTextBox.move(120,80)
        button = QPushButton("Save",self)
        button.move(180,110)
        button.clicked.connect(self.getValues)
        
        self.show()
        
    def getValues(self):
        name = self.nameTextBox.text()
        pw = self.passTextBox.text()
        self.setWindowTitle("Your name is "+name+"Your pw is"+pw)
        

    def exitFunc(self):
        self.text.setText("You Clicked Exit") 
        self.text.resize(150,20)
        
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

결과

 

 

이미지 넣기

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QPixmap

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(50, 50, 1000, 900)  # 창의 위치와 크기
        self.setWindowTitle("using Images")
        self.UI()
        
    def UI(self):
        self.image = QLabel(self)
        self.image.setPixmap(QPixmap('cat.jpg'))
        
        removeButton = QPushButton("Remove",self)
        removeButton.move(150,220)
        removeButton.clicked.connect(self.removeImg)
        showButton = QPushButton("Show",self)
        showButton.clicked.connect(self.showImg)
        showButton.move(260,220)
        self.show()
        
    def removeImg(self):
        self.image.close()
    def showImg(self):
        self.image.show()
        
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

remove / show 버튼 클릭시 사진 사라짐 / 나타남

 

checkBox

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(50, 50, 500, 500)  # 창의 위치와 크기
        self.setWindowTitle("using CheckBox")
        
        self.UI()
        
    def UI(self):
        self.name = QLineEdit(self)
        self.name.setPlaceholderText("Please enter your name")
        self.surname = QLineEdit(self)
        self.surname.setPlaceholderText("Family name을 입력하세요")
        self.name.move(150,50)
        self.surname.move(150,80)
        self.remember = QCheckBox("Remember me",self)
        self.remember.move(150,110)
        button = QPushButton("Submit",self)
        button.move(200,140)
        button.clicked.connect(self.submit)
        
        self.show()
        
    def submit(self):
        if (self.remember.isChecked()):
            print("Name : "+self.name.text()+ "\nSurname : "+self.surname.text()+"\nRemember me checked")
        else :
            print("Name : "+self.name.text()+ "\nSurname : "+self.surname.text()+"\nRemember me not checked")

        
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

출력 결과

 

 

 

ComboBox

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(250, 150, 500, 500)  # 창의 위치와 크기
        self.setWindowTitle("using Comboboxes")
        self.UI()
        
    def UI(self):
        self.combo = QComboBox(self)
        self.combo.move(150,100)
        button = QPushButton("Save",self)
        button.move(150,130)
        button.clicked.connect(self.getValue)
        self.combo.addItem("Python")
        self.combo.addItems(["C","C#","PHP"])
        list1 = ["Batman","Superman","Spiderman"]

        for name in list1:
            self.combo.addItem(name)
            
        for number in range(18,101):
            self.combo.addItem(str(number))

        self.show()
        
    def getValue(self):
        value = self.combo.currentText()
        print(value)
        
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

(왼) 실행 직후 화면 (오) 선택 후 save 한 화면 (하) save시 출력 결과

 

 

RadioButton

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(50, 50, 500, 500)  # 창의 위치와 크기
        self.setWindowTitle("using RadioButton")
        
        self.UI()
        
    def UI(self):
        self.name = QLineEdit(self)
        self.name.setPlaceholderText("Please enter your name")
        self.surname = QLineEdit(self)
        self.surname.setPlaceholderText("Please enter your first name")
        self.name.move(150,50)
        self.surname.move(150,80)
        self.male = QRadioButton("남성",self)
        self.female = QRadioButton("여성",self)
        self.female.setChecked(True)
        self.female.move(150,110)
        self.male.move(240,110)
        button = QPushButton("Submit",self)
        button.move(200,140)
        button.clicked.connect(self.submit)
        
        self.show()
        
    def submit(self):
        if (self.male.isChecked()):
            print("Name : "+self.name.text()+ "\nSurname : "+self.surname.text()+"\n남성입니다.")
        else :
            print("Name : "+self.name.text()+ "\nSurname : "+self.surname.text()+"\n여성입니다.")

        
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

 

결과

 

 

Message Boxes

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont

font = QFont("Times", 12)

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(250, 150, 500, 500)  # 창의 위치와 크기
        self.setWindowTitle("using Message Boxes")
        self.UI()
        
    def UI(self):
        button = QPushButton("Click Me!", self)
        button.setFont(font)
        button.move(200, 150)
        button.clicked.connect(self.messageBox)
        self.show()
        
    def messageBox(self):
        # mbox = QMessageBox.information(self,"information","You Logged Out!")
        mbox = QMessageBox.question(self,"Warning!!!", "Are you sure to exit?",QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel,QMessageBox.No)
        if mbox == QMessageBox.Yes:
            sys.exit()
        elif mbox == QMessageBox.No:
            print("You clicked No Button")
            
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

no를 선택했을 때의 결과

 

SpinBox

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont

font = QFont("Times", 16)

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(250, 150, 500, 500)  # 창의 위치와 크기
        self.setWindowTitle("using Spin Boxes")
        self.UI()
        
    def UI(self):
       self.spinBox = QSpinBox(self)
       self.spinBox.move(150,100)
       self.spinBox.setFont(font)
       # self.spinBox.setMinimum(25)
       # self.spinBox.setMaximum(110)
       self.spinBox.setRange(25,110)
       # self.spinBox.setPrefix("$ ")
       self.spinBox.setSuffix(" cm")
       self.spinBox.setSingleStep(5)
       # self.spinBox.valueChanged.connect(self.getValue)
       button = QPushButton("Send",self)
       button.move(150,140)
       button.clicked.connect(self.getValue)
       
       self.show()
    
    def getValue(self):
        value=self.spinBox.value()
        print(value)
      
        
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

send 클릭시 그 값 출력

 

 

 

Text Editor

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont

font = QFont("Times", 14)

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(250, 150, 500, 500)  # 창의 위치와 크기
        self.setWindowTitle("using Text editor")
        self.UI()
        
    def UI(self):
        self.editor = QTextEdit(self)
        self.editor.move(150,80)
        button = QPushButton("Send",self)
        self.editor.setAcceptRichText(False)
        button.move(330,280)
        button.clicked.connect(self.getValue)
        self.show()
    
    
    def getValue(self):
        text = self.editor.toPlainText()
        print(text)
      
            
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

 

 

 

Timer

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QFont
from PyQt5.QtCore import QTimer

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(250, 150, 500, 500)  # 창의 위치와 크기
        self.setWindowTitle("using Timer")
        self.UI()
        
    def UI(self):
        self.colorLabel = QLabel(self)
        self.colorLabel.resize(250,250)
        self.colorLabel.setStyleSheet("background-color:green")
        self.colorLabel.move(40,20)
        ###################Buttons#######################
        btnStart = QPushButton("Start",self)
        btnStart.move(80,300)
        btnStart.clicked.connect(self.start)
        btnStop = QPushButton("Stop",self)
        btnStop.move(190,300)
        btnStop.clicked.connect(self.stop)
        ###################Timer#########################
        self.timer = QTimer()
        self.timer.setInterval(100)  #0.1초
        self.timer.timeout.connect(self.changeColor)
        self.value=0
        self.show()
        
    def changeColor(self):
        if self.value==0:
            self.colorLabel.setStyleSheet("background-color:yellow")
            self.value=1
        else:
            self.colorLabel.setStyleSheet("background-color:red")
            self.value=0
    
    def start(self):
        self.timer.start()
        
    def stop(self):
        self.timer.stop()
        
            
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

초록색으로 시작해서 Start를 누르면 0.1초 간격으로 빨간색과 노란색 출력

 

 

List Widget

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(50, 50, 500, 500)  # 창의 위치와 크기
        self.setWindowTitle("using List widget")
        self.UI()
        
    def UI(self):
        self.addRecord = QLineEdit(self)
        self.addRecord.move(100,50)
        self.listWidget = QListWidget(self)
        self.listWidget.move(100,80)
        ####################################
        list1 = ["Batman","Superman","Spiderman"]
        self.listWidget.addItems(list1)
        self.listWidget.addItem("Heman")
        # for number in range(5,11)
        #   self.listwidget.addItem(str(number))
        #####################################
        btnAdd = QPushButton("Add",self)
        btnAdd.move(360,80)
        btnAdd.clicked.connect(self.funcAdd)
        btnDelete = QPushButton("Delete",self)
        btnDelete.move(360,110)
        btnDelete.clicked.connect(self.funcDelete)
        btnGet = QPushButton("Get",self)
        btnGet.move(360,140)
        btnGet.clicked.connect(self.funcGet)
        btnDeleteAll = QPushButton("Delete All",self)
        btnDeleteAll.move(360,170)
        btnDeleteAll.clicked.connect(self.funcDeleteAll)
        self.show()
        
    def funcAdd(self):
        val = self.addRecord.text()
        self.listWidget.addItem(val)
        self.addRecord.setText("")
    def funcDelete(self):
        id = self.listWidget.currentRow()
        print(id)
        self.listWidget.takeItem(id)
    def funcGet(self):
        val = self.listWidget.currentItem().text()
        print(val)
    def funcDeleteAll(self):
        self.listWidget.clear()
            
def main():
    App = QApplication(sys.argv)
    window = Window()
    sys.exit(App.exec_())
    
if __name__ =='__main__':
    main()

반응형

'study > python' 카테고리의 다른 글

객체 지향 프로그래밍과 절차적 프로그래밍  (0) 2020.12.02
PyQt5 : widget and layout  (0) 2020.11.26
Matplotlib - 그래프 그리기2  (0) 2020.11.16
Matplotlib - 그래프 그리기  (0) 2020.11.09
Pandas - 데이터 합치기  (0) 2020.11.09
'study/python' 카테고리의 다른 글
  • 객체 지향 프로그래밍과 절차적 프로그래밍
  • PyQt5 : widget and layout
  • Matplotlib - 그래프 그리기2
  • Matplotlib - 그래프 그리기
jjikky
jjikky
  • jjikky
    jikky.env
    jjikky
  • 전체
    오늘
    어제
    • 분류 전체보기
      • React
      • Node.js
        • TDD
        • Node.js
        • mern
        • OAuth
        • js_facebook login
      • Coding Test
        • 백준 알고리즘
        • CodeUp
        • 코테 이론
      • Js
        • Javascript
      • study
        • python
        • android
        • Big data analysis
        • Logic Circuit
      • git
      • 개발일지
      • 게임기획
      • Docker
      • IPFS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    파이썬 완전탐색
    nft
    Ipfs
    그리디 알고리즘
    빅데이터
    코딩테스트
    NFT Marketplace
    ipfs add
    verilog할당문
    범주형 자료
    안드로이드
    파이썬 그리디
    Python
    verilog
    ifps 네트워크 지연
    git 유용한 명령어
    파이썬
    NFT IPFS
    파이썬 딕셔너리
    UI
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
jjikky
PyQt5
상단으로

티스토리툴바