반응형

 

버튼 클릭 시 바뀌는 이벤트 (pyqt)

 

 

+사용한 pyqt01.ui

 

from PyQt5 import QtWidgets, uic
import sys

form_window = uic.loadUiType("pyqt01.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb.clicked.connect(self.myclick)
        self.show()
        self.clicked_once = False  # 버튼이 클릭되었는지 여부를 저장하는 변수

    def myclick(self):
        if not self.clicked_once:  # 처음 클릭되었을 때
            self.lbl.setText("Good Evening!")
            self.clicked_once = True
        else:  # 두 번째 클릭되었을 때
            self.lbl.setText("Good Morning!")
            self.clicked_once = False

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면1

 

 

 

  • 버튼 클릭 시 숫자 1 증가
from PyQt5 import QtWidgets, uic
import sys

form_window = uic.loadUiType("pyqt02.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        sum = int(self.le.text())
        sum += 1
        self.le.setText(str(sum))

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면2

 

 

+ 사용한 ui

 

 

 

  • 두 수를 받아와 버튼 클릭 시 빼기
from PyQt5 import QtWidgets, uic
import sys

form_window = uic.loadUiType("pyqt03.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        su1 = int(self.le01.text())
        su2 = int(self.le02.text())
        sum = su1 - su2
        self.le03.setText(str(sum))

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면3

 

 

 

  • 단 입력 후 구구단 출력하기
from PyQt5 import QtWidgets, uic
import sys

form_window = uic.loadUiType("pyqt04.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        su1 = self.le.text()
        su2 = int(su1)
        txt = ""
        
        for i in range(1,9+1):
            txt += "{}x{}={}\n".format(su1,i,i*su2)
            
        self.te.setText(txt)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면4

 

 

 

  • 로또 번호 출력하기
from PyQt5 import QtWidgets, uic
import sys
from random import random

form_window = uic.loadUiType("pyqt05.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        su = list(range(1, 45+1))
        
        for i in range(1,999):
            rnd = int(random()*45)
            temp = su[0];
            su[0] = su[rnd]
            su[rnd] = temp 
            # print(su)
        
        self.lcd1.display(su[0])
        self.lcd2.display(su[1])
        self.lcd3.display(su[2])
        self.lcd4.display(su[3])
        self.lcd5.display(su[4])

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면5

 

 

 

  • n에서 m까지 a배수의 합 구하기
from PyQt5 import QtWidgets, uic
import sys
from random import random

form_window = uic.loadUiType("pyqt06.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb.clicked.connect(self.myclick)

    def myclick(self):
        su1 = int(self.le1.text())
        su2 = int(self.le2.text())
        su3 = int(self.le3.text())
        sum = 0

        arr = list(range(su1, int(su2+1)))
        
        for i in arr:
            if i%su3 == 0:
                print(i)
                sum += i
        
        self.le4.setText(str(sum))


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면6

 

 

 

  • 번호 입력 후 버튼 클릭 시 알람창 출력하기
from PyQt5 import QtWidgets, uic
import sys
from random import random
from PyQt5.Qt import QMessageBox

form_window = uic.loadUiType("pyqt07.ui")[0]

class UiMainWindow(QtWidgets.QMainWindow, form_window):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()
        self.pb1.clicked.connect(self.myclick)
        self.pb2.clicked.connect(self.myclick)
        self.pb3.clicked.connect(self.myclick)
        self.pb4.clicked.connect(self.myclick)
        self.pb5.clicked.connect(self.myclick)
        self.pb6.clicked.connect(self.myclick)
        self.pb7.clicked.connect(self.myclick)
        self.pb8.clicked.connect(self.myclick)
        self.pb9.clicked.connect(self.myclick)
        self.pb0.clicked.connect(self.myclick)
        self.pb_call.clicked.connect(self.mycall)

    def myclick(self):
        str_old = self.le.text() 
        str_new = self.sender().text() # sender : 기존에 존재하는 text의 값을 가져옴
        self.le.setText(str_old+str_new)
    
    def mycall(self):
        str = self.le.text()
        QMessageBox.about(self,'Calling',str) # 파이썬 alert창
        

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main_window = UiMainWindow()
    sys.exit(app.exec_())

 

결과 화면7

 

 

반응형