본문 바로가기
✨Python

[Python/파이썬] 파이썬으로 ui 윈도우 어플리케이션 구현하기 위젯 3 툴바만들기, 날짜찍기,스타일시트만들기

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

# 툴바만들기

# 위젯 툴바 만들기
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5 import uic

class myWindow(QMainWindow):

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

    def initWindow(self):
        self.statusBar().showMessage('하이하이')

        menu1 = QAction(QIcon('1.png'), 'EXIT', self )
        menu1.setShortcut('CTRL+P')
        menu1.setStatusTip('프로그램 출력')
        menu1.triggered.connect(qApp.quit) #프로그램이 꺼짐

        menu2 = QAction(QIcon('2.png'), 'print', self )
        menu2.setShortcut('CTRL+Q')
        menu2.setStatusTip('프로그램 종료')
        menu2.triggered.connect(qApp.quit) #프로그램이 꺼짐

        menu3 = QAction(QIcon('3.png'), 'save', self )
        menu3.setShortcut('CTRL+S')
        menu3.setStatusTip('프로그램 저장')
        menu3.triggered.connect(qApp.quit) #프로그램이 꺼짐

        menu4 = QAction(QIcon('4.png'), 'EDIT', self )
        menu4.setShortcut('CTRL+E')
        menu4.setStatusTip('프로그램 수정')
        menu4.triggered.connect(qApp.quit) #프로그램이 꺼짐

        toolbar = self.addToolBar('toolbar') #여기다가 메뉴1을 붙이겠다 대신 이 툴바이름을 넣어줘야함
        toolbar.addAction(menu1)
        toolbar.addAction(menu2)
        toolbar.addAction(menu3)
        toolbar.addAction(menu4)



        self.setGeometry(100,100,300,300)
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = myWindow()
    sys.exit(app.exec_())
#무한루프

 

menu1 = QAction(QIcon('1.png'), 'EXIT', self )
menu1.setShortcut('CTRL+P')
menu1.setStatusTip('프로그램 출력')
menu1.triggered.connect(qApp.quit) #프로그램이 꺼짐

큐액션에 큐아이콘불러오고 큐아이콘에 달 문장을 달고

그 옆에 글씨써주고

밑에 상태바에 프로그램 출력이 뜨게하고

그 뒤에 트리거에 진짜 실행할 액션을 넣어준다.

 

toolbar = self.addToolBar('toolbar') #여기다가 메뉴1을 붙이겠다 대신 이 툴바이름을 넣어줘야함
toolbar.addAction(menu1)
toolbar.addAction(menu2)
toolbar.addAction(menu3)
toolbar.addAction(menu4)

 

 

 

그 후 addtoolbar를 만들어준뒤에

그 뒤에 툴바액션을 실행해주면 

잘돌아가는 것을 확인할 수 있다.

 

 

# 날짜찍기

 

# 상태표시줄에 날짜찍기
self.date = QDate.currentDate()

Qdate를 임포트해주고

 

 

def initWindow(self):
    self.statusBar().showMessage(self.date.toString('dd.MM.yyyy'))#그냥찍으면 에러뜸

 

 

상태바에 데이트를 불러와준다음에 그냥 불리면 에러뜨니까 스트링형식으로 바꿔서 해주면 

잘 돌아가는 것을 알 수 있다.

 

 

다른형식으로 지정할 수 있는데

qt를 임포트해서 디폴트로컬롱데이트로하면

잘나오는 것을 확인할 수 있다.

def initWindow(self):
    self.statusBar().showMessage(self.date.toString(Qt.DefaultLocaleLongDate))#그냥찍으면 에러뜸

 

#스타일시트 지정하기

import sys

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5 import uic


class MyWindow(QWidget):

    def __init__(self):
        super().__init__()
        # 부모클래스 초기화자를 불러옴(반드시 필수사항임)
        self.initWindow()
        # 함수호출

    def initWindow(self):

        label_red = QLabel('빨강')
        label_blue = QLabel('파랑')

        label_red.setStyleSheet(
            # 여기다가 css넣기 / json형식으로 넣어야함

            "color:red;"
            "border-style:solid;"
            "border-width:2px;"
            "border-color:red;"
            "background-color:pink"


        )
        label_blue.setStyleSheet(
            # 여기다가 css넣기 / json형식으로 넣어야함

            "color:blue;"
            "border-style:solid;"
            "border-width:2px;"
            "border-color:blue;"
            "background-color:skyblue"

        )
        styleBox = QVBoxLayout()
        styleBox.addWidget(label_red)
        styleBox.addWidget(label_blue)
        self.setLayout(styleBox)

        self.setGeometry(100,100,300,300)
        self.show()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyWindow()
    sys.exit(app.exec_())

# 이벤트 루프를 만들어 주는 것임

label_red = QLabel('빨강')
label_blue = QLabel('파랑')

레이블만들어주기

 

 


label_red.setStyleSheet(
    # 여기다가 css넣기 / json형식으로 넣어야함

    "color:red;"
    "border-style:solid;"
    "border-width:2px;"
    "border-color:red;"
    "background-color:pink"


)

css지정해주기

styleBox = QVBoxLayout()
styleBox.addWidget(label_red)
styleBox.addWidget(label_blue)
self.setLayout(styleBox)

self.setGeometry(100,100,300,300)
self.show()

레이아웃 불러오기

 

잘돌아가는 것을 확인할 수 있다.

728x90
반응형
BIG

댓글