오드메이커
오드메이커 / 2020. 5. 16. 06:00 / Python/PyQt5

안녕하세요

PyQt5에서 CheckBox를 사용하는 방법에 대해서

알아보겠습니다.

 

CheckBox는 미리 설정해놓은 값에 대해서

on/off 하는 기능입니다.

체크표시를 키고 끈다고 생각하시면 됩니다.

 

그럼 어떻게 사용하는지 알아보겠습니다.

 

 

우선 3개의 체크박스와 하나의 라벨을 designer를 이용하여

만들었습니다.

 

 

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

UI = 'QCheckBox.ui'
class Dialog(QDialog):
    def __init__(self):
        super().__init__()
        uic.loadUi(UI, self)
        self.setting()

    def setting(self):
        self.cb_1.stateChanged.connect(self.change)
        self.cb_2.stateChanged.connect(self.change)
        self.cb_3.stateChanged.connect(self.change)

    def change(self):
        i = ''
        ii = ''
        iii = ''
        if self.cb_1.isChecked() == True:
            i = self.cb_1.text()
        if self.cb_2.isChecked() == True:
            ii = self.cb_2.text()
        if self.cb_3.isChecked() == True:
            iii = self.cb_3.text()
        self.lb_1.setText(i+' '+ii+' '+iii)

app = QApplication(sys.argv)
ex = Dialog()
ex.show()
sys.exit(app.exec_())

코드는 다음과 같습니다.

3개의 체크박스 중에서 체크가 된 것을

라벨에 표시하도록 했습니다.

 

 

실행화면입니다.

미리 만들어 놓은 3개의 체크박스와 라벨이 보이네요

이제 각각의 경우에 대해서 동작시켜 보겠습니다.

 

 

우선 "안녕하세요"만 체크했을 때에는

라벨에 "안녕하세요"만 표시가 되네요.

 

 

"안녕하세요"와 "오드메이커입니다" 두개를 체크했을 때 입니다.

아래에 라벨에서도 두가지 모두 표시가 됩니다.

 

 

이번에는 3개 모두 체크해보겠습니다.

라벨에서도 선택된 체크박스의 값들이 모두 표시가 됩니다.

 

 

"안녕하세요"를 빼보겠습니다.

이번에는 라벨에서 "안녕하세요"가 빠지네요

 

 

마찬가지로 "오드메이커입니다."를 빼니

"안녕하세요 잘 부탁드립니다."만 표시되는 것을 확인 할 수 있습니다.

 

간단하게 설정값에 대해서 on/off기능이 필요할 경우에

체크박스를 사용하면 유용할 듯 합니다.

 

글 봐주셔서 감사합니다.

오드메이커 / 2020. 5. 15. 20:50 / Python/PyQt5

안녕하세요

PyQt5에서 ComboBox를 사용하는 방법에 대해서

알아보겠습니다.

 

ComboBox는 미리 설정해 놓은 값을

불러와서 사용할때 많이 사용합니다.

 

그럼 어떻게 사용하는지 알아보겠습니다.

 

 

우선 designer를 이용하여

combobox와 label을 하나씩 만들어 주겠습니다.

 

 

콤보박스에 설정할 값을 추가해 주겠습니다.

+버튼을 누르면 추가가 되고

이름을 바꿔 주면 됩니다.

저는 3개를 만들었습니다.

 

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

UI = 'QComboBox.ui'
class Dialog(QDialog):
    def __init__(self):
        super().__init__()
        uic.loadUi(UI, self)
        self.setting()

    def setting(self):
        self.cb_1.currentIndexChanged.connect(self.change)

    def change(self):
        self.lb_1.setText(self.cb_1.currentText())

app = QApplication(sys.argv)
ex = Dialog()
ex.show()
sys.exit(app.exec_())

코드는 다음과 같습니다.

설정한 콤보박스의 값이

변경될때 라벨에 값이 변경되도록 설정했습니다.

 

 

실행화면입니다.

우선 실행하면 초기화면이 뜨게 됩니다.

이제 콤보박스를 하나하나 변경해보겠습니다.

 

 

콤보박스에서 2nd로 변경하니

라벨의 값도 2nd로 변경하였습니다.

여기서 저는 라벨에 변경될 값을 콤보박스의 이름으로

설정했으나 원하시는 값으로 변경하도록

설정하 실 수 있습니다.

 

 

다음은 3rd로 변경해 보았습니다.

마찬가지로 라벨의 값도 3rd로 변경 되었습니다.

 

 

마지막으로 1st로 변경했습니다.

역시나 라벨의 값도 1st로 변경이 되네요.

 

이렇게 콤보박스를 사용하면

빈번하게 사용하는 값을 저장하여

편하게 사용할 수 있습니다.

 

이런저런 다양한 기능을 추가하여

재밋는 프로그램 만드시기 바랍니다.

감사합니다.

오드메이커 / 2020. 5. 5. 02:00 / Python/PyQt5

안녕하세요

PyQt5의 QPushButton를 Diaable하는 방법에 대하여

알아보겠습니다.

 

Button이 눌려지지 말아야 할 경우가 있는데

이럴때 사용자가 누를수 없도록 만드는 것이 Disable입니다.

루프가 돌아갈때나 버튼을 두번 누를 염려가 있는 경우에도

많이 사용하게됩니다.

 

그럼 어떻게 설정하는지 알아보겠습니다.

 

 

먼저 GUI구성하겠습니다.

button 3개와 label1개를 배치했습니다.

button을 누르면 누른 버튼은 다시 선택하지 못하도록

Disable시킬 예정입니다.

 

 

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

UI = 'QPushButton.ui'
class Dialog(QDialog):
    def __init__(self):
        super().__init__()
        uic.loadUi(UI, self)
        self.setting()

    def setting(self):
        self.pb_1.clicked.connect(lambda: self.change('1'))
        self.pb_2.clicked.connect(lambda: self.change('2'))
        self.pb_3.clicked.connect(lambda: self.change('3'))

    def change(self, get):
        if get == '1':
            self.label.setText('1st')
            self.pb_1.setDisabled(True)
            self.pb_2.setEnabled(True)
            self.pb_3.setEnabled(True)
        elif get == '2':
            self.label.setText('2nd')
            self.pb_1.setEnabled(True)
            self.pb_2.setDisabled(True)
            self.pb_3.setEnabled(True)
        elif get == '3':
            self.label.setText('3rd')
            self.pb_1.setEnabled(True)
            self.pb_2.setEnabled(True)
            self.pb_3.setDisabled(True)

app = QApplication(sys.argv)
ex = Dialog()
ex.show()
sys.exit(app.exec_())

코드는 다음과 같습니다.

button입력은 받은 후

클릭된 button을 disable시키고 나머지 버튼은 enable시키도록 했습니다.

클릭된 button이 어떤것인지 알기 위해서 시그널을 보낼때

함수에 특정값을 보내도록 했습니다.

 

 

실행화면입니다.

GUI구성처럼 실행이 되었습니다.

그러면 버튼을 하나하나 클릭해 보겠습니다.

 

 

우선 첫번째 버튼인 1st버튼을 클릭해 보겠습니다.

버튼을 클릭하니 label에 1st가 출력이 되면서

1st버튼은 클릭할 수 없도록 disable되었습니다.

 

 

이번에는 2nd버튼을 클릭해보겠습니다.

1st버튼과 같이 label에 2nd가 출력이 되면서

2nd버튼은 클릭할 수 없도록 disable되었습니다.

반면에 이전에 선택된 1st버튼은 다시 클릭할 수 있도록

enable되었습니다.

 

 

마지막으로 3rd버튼을 클릭해 보겠습니다.

이전과 같이 label에 3rd값이 출력이 되었고

3rd버튼은 클릭 할 수 없도록 disable되었습니다.

 

이렇게 버튼을 클릭을 할 수 있고, 할 수 없도록

disable, enable 하는방법에 대해서 알아보았습니다.

이렇게 사용자의 동작을 제한하는 것도

프로그램을 만드는데 중요하다고 생각합니다.

 

고생하셨구요

하시는 일에 도움이 되었으면 합니다.

감사합니다.

오드메이커 / 2020. 5. 4. 20:53 / Python/PyQt5

안녕하세요

PyQt5의 QPushButton의 사용방법에 대하여

알아보겠습니다.

 

pushbutton은 말그대로 누르면

시그널을 보내주는 역할을 합니다.

사용자가 원할때 시그널을 보내줄 수 있기 때문에

직관적으로 사용할 수 있습니다.

GUI구성에 있어서 가장 유용한 기능이

button기능이 아닐까 생각합니다.

 

그럼 사용방법에 대해서 알아보겠습니다.

 

 

먼저 GUI구성을 하겠습니다.

Button 3개와 Label 1개로 구성했습니다.

버튼을 클릭하면 라벨에 선택한 버튼에 대한 값이

출력되도록 할 예정입니다.

 

 

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

UI = 'QPushButton.ui'
class Dialog(QDialog):
    def __init__(self):
        super().__init__()
        uic.loadUi(UI, self)
        self.setting()

    def setting(self):
        self.pb_1.clicked.connect(lambda: self.change('1'))
        self.pb_2.clicked.connect(lambda: self.change('2'))
        self.pb_3.clicked.connect(lambda: self.change('3'))

    def change(self, get):
        if get == '1':
            self.label.setText('1st')
        elif get == '2':
            self.label.setText('2nd')
        elif get == '3':
            self.label.setText('3rd')

app = QApplication(sys.argv)
ex = Dialog()
ex.show()
sys.exit(app.exec_())

코드는 다음과 같습니다.

Button 각각을 클릭하면 시그널을 보내도록 했습니다.

어떤 Button이 클릭되었는지 확인이 필요하기 때문에

시그널을 보낼때 함수에 각각 다른 값을 보내도록 했습니다.

 

 

실행화면입니다.

GUI구성처럼 실행이 됩니다.

 

 

1st 버튼을 클릭해보겠습니다.

Label에 1st가 입력이 되네요

 

 

다음은 2nd버튼을 클릭해보겠습니다.

마찬가지로 label에 2nd가 입력이 되구요

 

 

마지막으로 3rd버튼을 클릭해보겠습니다.

3rd가 label에 입력됩니다.

 

Button사용방법에 대해서

알아 보았습니다.

필요한 기능이 있으시면 더 추가하여

다양한 기능을 할 수 있도록 구성하면 좋을 듯 합니다.

 

오늘도 고생하셨구요

도움이 되셨으면 합니다.

감사합니다.

 

오드메이커 / 2020. 5. 3. 06:00 / Python/PyQt5

 

안녕하세요.

오늘은 파이썬의 PyQt5에서

Qlabel의 색상을 바꾸는 방법에 대해서

알려드리겠습니다.

 

label뿐만 아니라 button, line edit 도 비슷한 방법으로

색상을 변경할 수 있으니

잘 익혀 두시면 여러방면으로 사용하실 수 있습니다.

이번에 알려드리는 방법은 RGB값을 변경하여 색상을 변경하는 방법입니다.

 

 

방법은 간단하니 천천히 따라오시면 됩니다.

GUI구성을 하겠습니다.

designer를 이용하겠구요

label과 slider를 배치했습니다.

slider를 변경하면서 RGB값을 변경할 수 있도록 할 것입니다.

 

 

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

UI = 'label_200502.ui'
class Dialog(QDialog):
    def __init__(self):
        super().__init__()
        uic.loadUi(UI, self)
        self.setting()

    def setting(self):
        self.rgb_1.sliderMoved.connect(self.change)
        self.rgb_2.sliderMoved.connect(self.change)
        self.rgb_3.sliderMoved.connect(self.change)

    def change(self):
        i = self.rgb_1.value()
        ii = self.rgb_2.value()
        iii = self.rgb_3.value()
        self.label.setStyleSheet('color:rgb(%s,%s,%s)'%(i,ii,iii))

app = QApplication(sys.argv)
ex = Dialog()
ex.show()
sys.exit(app.exec_())

코드는 다음과 같습니다.

3개의 slider를 이용하여 각각의 RGB값을 받은 후에

label의 색상을 바꿔주도록 했습니다.

 

 

실행화면입니다.

이제 slider를 변경하면서 색상을 바꿔보겠습니다.

 

 

초록색으로 보이네요

 

 

일반적인 빨간색이구요

 

 

일반적인 파란색 입니다.

 

이렇게 RGB값을 이용하여

label의 색상을 바꾸는 방법에 대해서 알아보았습니다.

 

그럼 도움이 되셨으면 하구요

오늘도 화이팅하시기 바랍니다.

감사합니다.

오드메이커 / 2020. 5. 1. 18:42 / Python/PyQt5

안녕하세요.

오늘은 파이썬의 PyQt5에서

Qlabel을 사용하는 방법에 대해서

알려드리겠습니다.

 

Qlabel을 매우 빈번하게 사용하기 때문에

간단한 사용방법만 알고도

유용하게 사용할 수 있습니다.

 

방법은 간단하니 천천히 따라오시면 됩니다.

 

 

우선 PyQt5의 designer를 이용하여

Widget을 만들겠습니다.

표시된 부분과 같이

2개의 button과 line edit, label을 만들었습니다.

 

 

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

UI = 'label_200501.ui'
class Dialog(QDialog):
    def __init__(self):
        super().__init__()
        uic.loadUi(UI, self)
        self.setting()

    def setting(self):
        self.pb_change.clicked.connect(self.change)
        self.pb_clear.clicked.connect(self.clear)

    def change(self):
        self.lb_test.setText(self.le_value.text())

    def clear(self):
        self.lb_test.clear()

app = QApplication(sys.argv)
ex = Dialog()
ex.show()
sys.exit(app.exec_())

코드는 다음과 같습니다.

clear버튼을 누르면 label의 내용을 모두 지우도록 했고

change버튼을 누르면 label내용을 line edit에 적힌 내용으로

변경하도록 작성 했습니다.

 

 

프로그램 실행 화면입니다.

아까전 GUI를 구성한대로 실행이 됩니다.

 

 

change를 실행 해보겠습니다.

line edit에 '123'을 입력하고 버튼을 눌러줍니다.

그러니 label의 값이 변경 되었습니다.

 

 

이제 clear동작을 해보겠습니다.

clear버튼을 누르면

label의 내용이 모두 지워지는것을 확인 할 수 있습니다.

 

 

다시 값을 넣어 보겠습니다.

'동작확인'이라고 입력한 후에 change버튼을 눌러 줍니다.

label의 값이 변경되네요

 

간단하게 label의 값을 쓰고 지우는 방법에 대해서

알아보았습니다.

지금 보신 내용은 label을 사용하는데 가장 기초적인 내용입니다.

차후 label의 폰트나 크기, 색상등 변경하는 방법에 대해서

다뤄 보겠습니다.

 

감사합니다. 

오드메이커 / 2020. 4. 29. 22:55 / Python/PyQt5

안녕하세요.

PtQt5를 이용하여 사칙연산 계산기를 만들어 보겠습니다.

PyQt5를 처음 접해보시는 분들이 이해하기 쉽도록

기능을 설명드리고자

초간단 버전으로 제작하였습니다.

값을 입력하고 사칙연산의 결과를 보도록 하겠습니다.

차후에 더 멋진 계산기를 만들어 보겠습니다.

 

 

처음 접해보시는 분들은 GUI를 만드는 것부터

어려우실 겁니다.

PyQt5는 designer 툴을 제공해주기 때문에

직관적으로 GUI를 만들 수 있습니다.

왼쪽 아이콘에서 원하는 것을 드래그 하여

하나하나 추가 해주시면 됩니다.

 

저는 여기서 QlineEdit, QcomboEdit, QComboBox,QPushButton을 사용했습니다.

보기 좋게 하기 위해서 Layout을 사용했는데 사용하셔도 되고 안하셔도 됩니다.

 

 

 사칙연산 고르는 방법으로 콤보상자를 사용했습니다.

여기서 더하기버튼을 클릭하면 추가할 수 있는데

저는 덧셈, 뺄셈, 곱셈, 나눗셈을 추가해주었습니다.

 

 

import sys
from PyQt5.QtWidgets import *
from PyQt5 import uic

UI = 'calculator_200429.ui'
class Dialog(QDialog):
    def __init__(self):
        super().__init__()
        uic.loadUi(UI, self)
        self.setting()

    def setting(self):
        self.check.clicked.connect(self.calculator)

    def calculator(self):
        i = 0
        if self.value.currentText() == '+':
            i = float(self.X.text()) + float(self.Y.text())
        elif self.value.currentText() == '-':
            i = float(self.X.text()) - float(self.Y.text())
        elif self.value.currentText() == '*':
            i = float(self.X.text()) * float(self.Y.text())
        elif self.value.currentText() == '/':
            if self.Y.text() == '0':
                pass
            else:
                i = float(self.X.text()) / float(self.Y.text())
        self.result.setText(str(i))

app = QApplication(sys.argv)
ex = Dialog()
ex.show()
sys.exit(app.exec_())

코드는 다음과 같습니다.

버튼을 클릭하면 def calculator로 넘어가서

지정한 사칙연산을 계산하게 됩니다.

나눗셈의 경우 분모가 0이 될 경우 계산이 불가능하기 때문에

이럴 경우는 그냥 넘어가도록 했습니다.

 

QComboBox의 현재값을 보기 위해서는 currentText를 사용해야 하고

QlineEdit 에서 현재값을 보기 위해서는 text를 사용해야 합니다.

그리고 이렇게 가져온 값은 str이기 때문에

계산을 하기 위해 float로 변경하여 사칙연산을 진행 했습니다.

 

사칙연산의 결과값은 결과창에 넣어주기 위해서

setText를 사용했구요

이때 값이 str이여야 하기 때문에 int에서 str으로 변환해 주었습니다.

 

 

프로그램을 실행시켜 보았습니다.

다음과 같이 프로그램이 실행이 됬습니다.

값들을 변경 해보겠습니다.

 

 

사칙연산 변경을 하는 방법입니다.

사전에 만들어 놓은 것들이 나열되어 있네요

 

 

덧셈을 해보겠습니다.

X값에 5를 입력하고 Y값에 2를 입력한 후에

사칙연산을 +로 설정하고 확인을 눌러줍니다.

결과 값에 7이 입력이 되네요.

 

 

나눗셈의 경우 앞에서 코드 작성한 것과 같이

확인 버튼을 누를 경우 결과값이 0을 표시하게 됩니다.

만약 그냥 넘어가는 코드를 작성하지 않았다면

프로그램에 오류가 발생할 겁니다.

 

 

이렇게 간단하게 사칙연산이 가능한 계산기를

GUI로 만들어 보았습니다.

다음에는 더 좋은 내용으로 찾아 뵙겠습니다.

감사합니다.

© 2015 오드메이커 in 오드메이커
Designed by DH / Powered by Tistory
/ /