220831 pyqt 오전 python 수업

2022. 8. 31. 13:47카테고리 없음

C++기반?인 Python은 C++처럼 getText()가 아닌 text()로 요소의 글자를 가져오는데, C++이 개발될 시절엔 getter와 setter의 개념이 확입되지 않은 시기라서 그렇다고 함

 

누르면 텍스트의 숫자가 2배씩 증가하는 pyqt 만들기 

 

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

form_class = uic.loadUiType("./pyqt02.ui")[0];

class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        
        self.pb.clicked.connect(self.btnClick)
        
    def btnClick(self):
        a= (int) (self.le.text())
        self.le.setText(str(a*2))
#setText에는 문자형만 들어가기 때문에 str 해줘야함
if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

 

 

 

 

 

(int 범위 내의) 두 자연수의 곱셈 연산 가능한 pyqt

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

form_class =uic.loadUiType("./pyqt03.ui")[0];

class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb.clicked.connect(self.btnClick)
    
    def btnClick(self):
        a= int(self.leA.text())
        b= int(self.leB.text())
        self.leC.setText(str(a*b))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

로또 번호 생성 프로그램의 pyqt

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
import random
form_class =uic.loadUiType("./pyqt04.ui")[0]


class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb.clicked.connect(self.btnClick)
        
        
    def btnClick(self):
        arr45=list(range(1,45+1))
        for i in range(1000):
            rnd=int(random.random()*45)
            a=arr45[0]
            b=arr45[rnd]
            arr45[0]=b
            arr45[rnd]=a
        self.le1.setText(str(arr45[0]))
        self.le2.setText(str(arr45[1]))
        self.le3.setText(str(arr45[2]))
        self.le4.setText(str(arr45[3]))
        self.le5.setText(str(arr45[4]))
        self.le6.setText(str(arr45[5]))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

 

홀/짝을 입력하고 Enter키나 '게임하기' 버튼을 누르면 컴퓨터와 결과를 띄우는 프로그램 pyqt

 

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
import random
form_class =uic.loadUiType("./pyqt05.ui")[0]


class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb.clicked.connect(self.btnClick)
        #Enter키를 눌러도 메소드가 실행되도록 하는 소스
        self.leMine.returnPressed.connect(self.btnClick)
        
        
    def btnClick(self):
        user= self.leMine.text()
        rnd = int(random.random()*2)
        com=""
        result=""
        if(rnd==0):
            com="홀"
        elif(rnd==1):
            com="짝"
        
        if(user==com):
            result="이김"
        else:
            result="짐"
        
        self.leCom.setText(com)
        self.leResult.setText(result)
        
                
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

 

1.전화기처럼 버튼을 누르면 오른쪽에서 입력한 버튼의 숫자들이 하나씩 삽입됨.

2. Call 버튼을 누르면 입력했던 번호들이 내용으로 뜨는 알림창이 뜨고 입력창은 비워짐.

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.Qt import QMessageBox
form_class =uic.loadUiType("./pyqt06.ui")[0]

class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb0.clicked.connect(self.btnClick)
        self.pb1.clicked.connect(self.btnClick)
        self.pb2.clicked.connect(self.btnClick)
        self.pb3.clicked.connect(self.btnClick)
        self.pb4.clicked.connect(self.btnClick)
        self.pb5.clicked.connect(self.btnClick)
        self.pb6.clicked.connect(self.btnClick)
        self.pb7.clicked.connect(self.btnClick)
        self.pb8.clicked.connect(self.btnClick)
        self.pb9.clicked.connect(self.btnClick)
        self.pbCall.clicked.connect(self.btnCall)
        
    def btnClick(self):
        exist = self.le.text()
        str_new=self.sender().text()
        self.le.setText(exist+str_new)
    
    def btnCall(self):
        str_tel=self.le.text()
        QMessageBox.about(self,'calling', str_tel)
        self.le.setText("")

                        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

원하는 구구단의 단 수를 입력하고 출력하기 버튼을 누르면 해당 구구단의 단이 출력되는 pyqt

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
form_class =uic.loadUiType("./pyqt07.ui")[0]

class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb.clicked.connect(self.btnClick)
        
        
    def btnClick(self):
        dan=self.le.text()
        
        gugu=""
        for i in range(1,9+1):
            gugu+=dan+"*"+str(i)+"="+str(int(dan)*i)+"\n"
        self.te.setText(gugu)
        
        
                        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

컴퓨터와 가위바위보를 진행하는 프로그램의 pyqt

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
import random
form_class =uic.loadUiType("./pyqt08.ui")[0]


class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb.clicked.connect(self.btnClick)
        #Enter키를 눌러도 메소드가 실행되도록 하는 소스
        self.le_mine.returnPressed.connect(self.btnClick)
        
        
    def btnClick(self):
        user= self.le_mine.text()
        rnd = int(random.random()*3)
        com=""
        result=""
        if(rnd==0):
            com="가위"
        elif(rnd==1):
            com="바위"
        elif(rnd==2):
            com="보"
        
        if((user=="가위" and com=="가위") or (user=="바위" and com=="바위") or (user=="보" and com=="보")):
            result="비김"
        elif((user=="가위" and com=="보") or (user=="바위" and com=="가위") or (user=="보" and com=="바위")):
            result="이김"
        else:
            result="짐"
        
        self.le_com.setText(com)
        self.le_result.setText(result)
        
                
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()

첫 별의 수와 끝 별의 수를 입력한 뒤 '별 출력하기' 버튼을 입력하면 첫 별 수부터 끝 별 수까지 하나씩 늘어나도록 별이 찍히는 프로그램의 pyqt

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
import random
form_class =uic.loadUiType("./pyqt09.ui")[0]


class WindowClass(QMainWindow, form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.pb.clicked.connect(self.btnClick)
        #Enter키를 눌러도 메소드가 실행되도록 하는 소스
        
        
            
            
    def drawStar(self,i):
        star=""
        for a in range(1,i+1):
            star+="*"
             
        return star
    
    def btnClick(self):
        first=(int)(self.le_first.text())
        last=(int)(self.le_last.text())
        stars=""
        for b in range(first,last+1):
            stars+=self.drawStar(b)+"\n"
        self.te.setText(stars)
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = WindowClass()
    myWindow.show()
    app.exec_()