본문 바로가기
First step/AI 기초반

[TIL]21.06.24 PyQt ,class기초

by Joshua21 2021. 6. 24.


#PyQt 실행하기
import sys
from PyQt5.QtWidgets import * 
from PyQt5.QtCore import *

class MyWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        self.setWindowTitle('PyStock')
        self.setGeometry(300,300,300,400)

        btn1 = QPushButton('click me',self)
        btn1.move(20,20)
        btn1.clicked.connect(self.btn1_clicked)

    

    def btn1_clicked(self):
        QMessageBox.about(self,'message','clicked')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()

#disgner 사용해서 데모 만들고 코드라벨에 글자 넣
import sys
from PyQt5.QtWidgets import * 
from PyQt5 import uic

form_class=uic.loadUiType('demo.ui')[0]

class DemoForm(QDialog,form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.label.setText('첫번쨰 PyQt데모')

if __name__=='__main__':
    app = QApplication(sys.argv)
    demoWindow = DemoForm()
    demoWindow.show()
    app.exec_()

#세개의 버튼을 할당하고 누르면 메세지 출
import sys
from PyQt5.QtWidgets import * 
from PyQt5 import uic

form_class=uic.loadUiType('demo2.ui')[0]

class DemoForm(QMainWindow,form_class):
    def __init__(self):
        super().__init__()
        self.setupUi(self)                    
    def firstclick(self):
        self.label.setText('첫번째 버튼을 클릭')
    def secondclick(self):
        self.label.setText('두번째 버튼을 클릭')
    def thirdclick(self):
        self.label.setText('세번째 버튼을 클릭')


if __name__=='__main__':
    app = QApplication(sys.argv)
    demoWindow = DemoForm()
    demoWindow.show()
    app.exec_()

#클래스 사용하기 붕어빵의 틀을 만드는것
class person:#클래스이름
        def greeting(self): #클래스의 매소드
            print('hello')

james=person() #변수james 는 person의instrance(객체)임
james.greeting()#클래스는 특정 개념을 표현만 할뿐 사용을 하려면 인스턴스를 생성해야함

class person:#클래스이름
        def greeting(self): #클래스의 매소드
            print('hello')
a=10
print(type(a))
b=[0,1,2]
print(type(b))

c={'x':10,'y':20}
print(type(c))

maria=person()
print(type(maria))


#__init__ 인스턴스를 만들때 호출되는 매서드 class의문
#self는 자기 자신을 의미 하고 자기 속성을 추가함

class person:
    def __init__(self):
        self.hello = 'hi I am human'
        
    def greeting(self):
        print(self.hello)        
james=person()
james.greeting()


class person:
    def __init__(self,name,age,address):
          self.name = name
          self.age = age
          self.address = address
    def greeting(self):
        print('{0} 저는 {1}입니다'.format(self.hello,self.name))

name=input('이름은 무엇인가요?')
age=input('나이는 무엇인가요?')
address=input('주소는 무엇인가요?')
maria = person(name,age,address)

name=input('이름은 무엇인가요?')
age=input('나이는 무엇인가요?')
address=input('주소는 무엇인가요?')
james=person(name,age,address)


print('첫번쩨 이름:',maria.name)
print('첫번쩨 나이:',maria.age)
print('첫번쩨 주소:',maria.address)


print('두번쩨 이름:',james.name)
print('두번쩨 나이:',james.age)
print('두번쩨 주소:',james.address)

#비공개 속성 사용하기 __속성은 외부에서 접근하면 에러가 발생maria.__wallet -=1000

class person:
    def __init__(self,name,age,address,wallet):
          self.name = name
          self.age = age
          self.address = address
          self.__wallet = wallet
    def pay(self,amount): #비공개 속성은 class안의 매소드에서만접근 할수있음
        if amount > self.__wallet:
            print('잔액이부족합니다')
            return
        self.__wallet-=amount
        print('이제 {0}원 남았네요.'.format(self.__wallet))
        

        
maria = person('마리아',20,'서울시',10000)
maria.pay(3000)


#예제 비공개 속성 사용하기
class Annie: #class 안에서 적용되는변수들은 self를써줌
    def __init__(self,health,mana,ability_power):
        self.health = health
        self.mana = mana
        self.ability_power=ability_power
    def tibbers(self):
        print('티버 피해량 : {0}'.format(self.ability_power*0.65+400))

health,mana,ability_power = map(float,input().split())

x = Annie(health,mana,ability_power)

x.tibbers()


#연습문제 정답 class 소멸자는 

class orange:
    def __init__(self):    
        self.__origin = 10
    def minus(self,sub_count):
        self.__origin -= sub_count 
    def plus(self,add_count):
        self.__origin += add_count
    def clear(self):
        self.__origin = 0
    def check(self):
        return self.__origin

myob=orange()
ndata=int(input('추가 수량'))
myob.plus(ndata)
print('현재수량 %d'%myob.check())

ndata=int(input('제거  수량'))
myob.minus(ndata)
print('현재수량 %d'%myob.check())

print(' 수량 제거')
myob.clear()
print('현재수량 %d'%myob.check())

del myob