본문 바로가기
✨Python

[Python/파이썬] 파이썬으로 ui 윈도우 어플리케이션 구현하기 슬롯 과 시그널1

by 김말자 2022. 6. 13.
728x90
728x90
BIG

# 시그널 슬롯 만들기

import sys
from PyQt5.QtWidgets import *
class MyWindow(QWidget):

    def __init__(self):
        super().__init__()
        self.initWindow()


    def initWindow(self):
        lcd = QLCDNumber(self)
        dial = QDial(self)

        vbox = QVBoxLayout()
        vbox.addWidget(lcd)
        vbox.addWidget(dial)
        self.setLayout(vbox)

        self.setGeometry(50,50,200,200)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyWindow()
    sys.exit(app.exec_())

 

 

 

 

 

 

dial.valueChanged.connect(lcd.display)

슬롯 시그널

잘돌아감을 알 수 있다.

 

 

 

레이아웃을 hbox로 쪼갬

hbox = QHBoxLayout() #새로운 레이아웃으로 나눔
hbox.addWidget(btn1)
hbox.addWidget(btn2)
vbox.addLayout(hbox)
self.setLayout(vbox)

 

 

사이즈를 줄였다 늘렸다하기

 

 

def resizeBig(self): #화면사이즈바꾸는
    self.resize(400,400)

def resizeSmall(self):
    self.resize(150,150)

 

dial.valueChanged.connect(lcd.display)
btn1.clicked.connect(self.resizeBig)
btn2.clicked.connect(self.resizeSmall)

 

 

 

잘돌아감을 알 수 있다.

import sys
from PyQt5.QtWidgets import *
class MyWindow(QWidget):

    def __init__(self):
        super().__init__()
        self.initWindow()


    def initWindow(self):
        lcd = QLCDNumber(self) #슬롯
        dial = QDial(self) #시그널
        btn1 = QPushButton('BIG', self)
        btn2 = QPushButton('SMALL', self)

        hbox = QHBoxLayout() #새로운 레이아웃으로 나눔
        hbox.addWidget(btn1)
        hbox.addWidget(btn2)

        vbox = QVBoxLayout()
        vbox.addWidget(lcd)
        vbox.addWidget(dial)
        vbox.addLayout(hbox)
        self.setLayout(vbox)

        dial.valueChanged.connect(lcd.display)
        btn1.clicked.connect(self.resizeBig)
        btn2.clicked.connect(self.resizeSmall)

        self.setGeometry(50,50,200,200)
        self.show()
    def resizeBig(self): #화면사이즈바꾸는
        self.resize(400,400)

    def resizeSmall(self):
        self.resize(150,150)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyWindow()
    sys.exit(app.exec_())

 

 

#사용자정의시그널만들기

import sys
from PyQt5.QtWidgets import  *
from PyQt5.QtCore import *

class Signal(QObject):
     signal = pyqtSignal()
    
class MyWindow(QWidget):

    def __init__(self):
        super().__init__()
        self.initWindow()
        


    def initWindow(self):
        self.sig = Signal()
        self.sig.signal.connect(self.close) #프로그램종료
        
        self.setGeometry(50,50,300,300)
        self.show()
    
    def mousePressEvent(self, QMouseEvent):
        self.sig.signal.emit() #에밋메서드
        

 

728x90
반응형
BIG

댓글