본문 바로가기
파이썬 (Python)/파이썬 GUI + PyQt5

파이썬 Python GUI 구현 QPushButton 구현하기

by ★√★ 2021. 1. 27.

안녕하세요 이번 포스팅은 QPushButton에 대한 내용입니다. 버튼을 클릭 시 이벤트를 발생 시키는 것이라고 생각하시면 됩니다. PyQt5 설치가 완료가 되셨다면 바로 진행하셔도 되는데 됩니다.

 

혹시 설치가 안되셨다면 아래 Link를 통해서 먼저 설치 방법을 체득하시고 오시면 더 도움이 되실 거 같습니다.

 

 

파이썬 Python GUI 구현 PyQt5 설치하기 + QLabel 구현하기

안녕하세요, Davey 입니다. 오늘은 오랜만에 Python 관련된 글을 Posting 하려고 합니다. 이전에 제가 기재했는지는 모르겠지만, 모국어 & 외국어도 하나의 언어지만, 컴퓨터와 대화하는 programming도

davey.tistory.com

 

일단, Part #1에 기재된, Code는 아래와 같습니다. 복습한다는 느낌으로, 아래 주석과 함께, 같이 달아 드렸으니, 한번 읽고 진행하시면, 이해하는데 더 도움이 될 거라고 생각합니다. 

 

====================================================

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys

====================================================

 

그럼 위 사항에 대해서, 충분히 학습하셨다면, 이제, Button을 활성하는 방법으로 넘어가도록 하겠습니다. 일단 Button을 활성하기 위해서는, 아래 두가지 항목이 필요합니다.

 

1. Button 에 대한, Characteristic(특성) - Button의 크기, Button에 기재된, TEXT 등2. Button을 클릭했을 때, 나타나는 결과값 or 작업. Ex) 클릭하게 되면, "XXX"를 표현해 달라.

 

이 두가가를 구현하기 위해, 아래와 같이 간단하게 추가적인 Code를 가미하도록 하겠습니다. 

 

#1 Button의 Characteristic(특성) 관련 Code

 

====================================================

 

# button1이라는 변수에, GUI로 표현하는 Window창에 표현하겠다라는 선언을 합니다. 

button1 = QtWidgets.QPushButton(test) 



# button1 표면에 표시되는 Description에 대한, 내용을 추가합니다. 

button1.setText("Click Button")



# button1를 클릭했을때, clicked1이라는 함수랑 연결하여, 결과값 표현 or 작업을 수행합니다.

button1.clicked.connect(clicked1)

 

====================================================

위 Code는, def Test1(): 아래 항목에 기재하셔야 합니다. 저는 label 관련 내용 및에 추가하였습니다. 

추가한, Code는 아래와 같습니다. (빨간색으로 표시하였습니다.)

 

====================================================

 

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys





# button1이라는 변수에, GUI로 표현하는 Window창에 표현하겠다라는 선언을 합니다. 

button1 = QtWidgets.QPushButton(test) 



# button1 표면에 표시되는 Description에 대한, 내용을 추가합니다. 

button1.setText("Click Button")



# button1를 클릭했을때, clicked1이라는 함수랑 연결하여, 결과값 표현 or 작업을 수행합니다.

button1.clicked.connect(clicked1)

 

====================================================

그리고, 입력 후, 결과 값을 출력을 하면, 아래와 같이 표현이 됩니다. 

하지만, Click Button을 누른다고 해서, 아무것도 실행되지 않습니다. 그 이유는 제가 위에 말씀드렸던, 2번째 항목을 추가하지 않았기 때문입니다. 

 

 

 

그럼, 2번째 항목인, "clicked1" 항수를 선언해 보도록 하겠습니다. 제가 작성한 Code는 아래와 같습니다.

 

#2 Button을 클릭했을 때, 나타나는 결과값 표현 or 작업 수행 관련 Code

 

====================================================

 

# clicked1 이라는 함수를 선언합니다. 

def clicked1 ():



# clicked1이라는 함수 밑에, print method를 이용하여, button1을 클릭 시, "Click 했습니다." 를 output창에 표시하는 code를 입혓습니다.



print("Click 했습니다.")

 

====================================================

 

- 그럼, 위에 def clicked1 (): 항목까지 추가한 완성된 Code는 아래와 같습니다. 

 

====================================================

 

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys



# clicked1 이라는 함수를 선언합니다.

def clicked1 ():



# clicked1이라는 함수 밑에, print method를 이용하여, button1을 클릭 시, "Click 했습니다." 를 output창에 표시하는 code를 입혓습니다.



print("Click 했습니다.")



# Test1라는 함수를 선언해준다.
def Test1():

# PyQt5 내장 모듈을 통해, 경로 및 관련 내용 지정한다.
view = QApplication(sys.argv)
test = QMainWindow()

# 창을 보여주는 위치와 Size를 지정한다.
test.setGeometry(300, 300, 500, 500)

# 창의 메인 Title을 지정한다.
test.setWindowTitle("Davey To be Programmer")

# 창에, 특정위치에, Script를 하나 추가한다.
script = QtWidgets.QLabel(test)
script.setText("English Chinese")
script.move(50,50)



# button1이라는 변수에, GUI로 표현하는 Window창에 표현하겠다라는 선언을 합니다. 

button1 = QtWidgets.QPushButton(test) 



# button1 표면에 표시되는 Description에 대한, 내용을 추가합니다. 

button1.setText("Click Button")



# button1를 클릭했을때, clicked1이라는 함수랑 연결하여, 결과값 표현 or 작업을 수행합니다.

button1.clicked.connect(clicked1)






# Test1 함수를 실행한다.
Test1()

 

====================================================

 

위의 Code를 실행 후, Click Button이라는 이름의 Button을 클릭하면, Output 창에, "Click 했습니다." 라고, 표현이 되는 걸 확인 하실 수 있을 겁니다. (아래 Snap shot 참조 부탁 드립니다.)

 

 

 

이상입니다. 지금까지 Pyqt5의 QPushButton에 대한 내용으로 포스팅을 작성하였습니다. 여러번 보는 것보다 직업 해보는게 더 도움이 되는 거는 여러분도 아실겁니다. 한번 해보시고, 다 같이 성장하시죠. (저도 여러가지 경험을 통해, 직접 해보는게 얼마나 좋은지 매번 깨닫고 있습니다.)

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.] 

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab