본문 바로가기
PYTHON(파이썬)/PYSIDE6(GUI)

PYSIDE6 QT디자이너 설치

by eplus 2024. 10. 24.

Qt 디자이너는 GUI 애플리케이션을 시각적으로 디자인할 수 있는 도구입니다. 이 장에서는 Qt 디자이너를 설치하고 사용하는 방법을 알아보겠습니다.

 

#### Qt 디자이너 설치

Qt 디자이너를 사용하려면 먼저 Qt 도구 모음을 설치해야 합니다. Qt 도구 모음에는 Qt 라이브러리, Qt 디자이너, Qt 크리에이터 등이 포함됩니다. 설치 방법은 운영 체제에 따라 다르지만, 일반적으로 다음과 같은 단계를 따릅니다.

 

**Windows**

1. [Qt 공식 웹사이트](https://www.qt.io/download)를 방문하여 인스톨러를 다운로드합니다.

2. 다운로드한 인스톨러를 실행하고 설치 과정을 따라 진행합니다.

3. 설치 과정에서 "Qt Design Tools"를 선택하여 설치합니다.

 

**macOS**

1. [Qt 공식 웹사이트](https://www.qt.io/download)를 방문하여 인스톨러를 다운로드합니다.

2. 다운로드한 인스톨러를 실행하고 설치 과정을 따라 진행합니다.

3. 설치 과정에서 "Qt Design Tools"를 선택하여 설치합니다.

 

**Linux**

1. 패키지 관리자를 사용하여 Qt를 설치합니다. 예를 들어, Ubuntu에서는 다음 명령을 사용할 수 있습니다.

    ```bash

    sudo apt-get install qt5-default qttools5-dev-tools

    ```

 

#### Qt 디자이너 실행

Qt 디자이너를 설치한 후, Qt 디자이너를 실행하여 GUI를 시각적으로 디자인할 수 있습니다. Qt 디자이너를 실행하는 방법은 운영 체제에 따라 다릅니다.

 

**Windows**

1. 시작 메뉴에서 "Qt Designer"를 검색하여 실행합니다.

 

**macOS**

1. 응용 프로그램 폴더에서 "Qt Designer"를 찾아 실행합니다.

 

**Linux**

1. 터미널에서 다음 명령을 실행합니다.

    ```bash

    designer

    ```

 

#### Qt 디자이너 인터페이스

Qt 디자이너를 실행하면 다음과 같은 인터페이스가 나타납니다.

 

- **위젯 박스**: 사용할 수 있는 다양한 위젯을 표시합니다.

- **폼 편집기**: 위젯을 배치하여 폼을 디자인할 수 있는 영역입니다.

- **속성 편집기**: 선택한 위젯의 속성을 편집할 수 있는 영역입니다.

- **개요**: 폼의 위젯 계층 구조를 표시합니다.

- **동작 편집기**: 액션을 생성하고 편집할 수 있는 영역입니다.

 

#### 폼 생성

Qt 디자이너에서 새로운 폼을 생성하려면 다음 단계를 따릅니다.

 

1. "File" 메뉴에서 "New File or Project"를 선택합니다.

2. "Qt" 카테고리에서 "Qt Designer Form"을 선택하고 "Next"를 클릭합니다.

3. 사용할 폼 템플릿을 선택하고 "Next"를 클릭합니다.

4. 폼의 파일 이름과 저장 위치를 지정하고 "Finish"를 클릭합니다.

 

#### 위젯 추가

폼에 위젯을 추가하려면 위젯 박스에서 원하는 위젯을 폼 편집기로 드래그 앤 드롭합니다. 위젯의 크기와 위치를 조정할 수 있습니다.

 

#### 속성 설정

위젯의 속성을 설정하려면 속성 편집기에서 해당 위젯을 선택하고 속성을 편집합니다. 예를 들어, 버튼의 텍스트를 변경하거나 레이블의 글꼴을 설정할 수 있습니다.

 

#### 시그널 및 슬롯 연결

시그널과 슬롯을 연결하려면 다음 단계를 따릅니다.

 

1. "Edit" 메뉴에서 "Edit Signals/Slots"를 선택합니다.

2. 시그널을 보낼 위젯을 클릭하고, 시그널을 받을 위젯으로 드래그합니다.

3. 연결 다이얼로그에서 시그널과 슬롯을 선택하고 "OK"를 클릭합니다.

 

이제 시그널과 슬롯이 연결되어 이벤트를 처리할 수 있습니다.

 

#### 폼 저장

디자인한 폼을 저장하려면 "File" 메뉴에서 "Save"를 선택합니다. 폼은 .ui 파일로 저장되며, 이 파일을 PySide6 애플리케이션에서 사용할 수 있습니다.

 

#### PySide6에서 .ui 파일 사용

저장된 .ui 파일을 PySide6 애플리케이션에서 사용하려면 pyside6-uic 도구를 사용하여 .ui 파일을 Python 코드로 변환할 수 있습니다.

 

```bash

pyside6-uic form.ui -o form.py

```

 

변환된 Python 코드를 애플리케이션에서 사용할 수 있습니다.

 

```python

import sys

from PySide6.QtWidgets import QApplication, QMainWindow

from form import Ui_MainWindow  # 변환된 .ui 파일에서 생성된 클래스

 

class MainWindow(QMainWindow):

    def __init__(self):

        super().__init__()

        self.ui = Ui_MainWindow()

        self.ui.setupUi(self)

 

app = QApplication(sys.argv)

window = MainWindow()

window.show()

app.exec()

```

 

이 예제에서는 .ui 파일을 Python 코드로 변환하고, 이를 사용하여 메인 윈도우를 설정합니다.

 

### 결론

이 장에서는 Qt 디자이너를 설치하고 사용하는 방법에 대해 알아보았습니다. Qt 디자이너를 사용하면 GUI 애플리케이션을 시각적으로 디자인하고, PySide6와 통합하여 사용할 수 있습니다. 다음 장에서는 Qt 리소스 시스템을 사용하는 방법을 알아보겠습니다.

import sys
from PySide6.QtWidgets import QApplication, QMainWindow
from qt01 import Ui_Dialog  # 변환된 .ui 파일에서 생성된 클래스
# Pyside6-uic qt01.ui -o qt01.py
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
   
    def accept(self):
        print("accept")
   
    def reject(self):
        print("reject")
   
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
# -*- coding: utf-8 -*-

################################################################################
## Form generated from reading UI file 'qt01.ui'
##
## Created by: Qt User Interface Compiler version 6.7.2
##
## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################

from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
    QMetaObject, QObject, QPoint, QRect,
    QSize, QTime, QUrl, Qt)
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor,
    QFont, QFontDatabase, QGradient, QIcon,
    QImage, QKeySequence, QLinearGradient, QPainter,
    QPalette, QPixmap, QRadialGradient, QTransform)
from PySide6.QtWidgets import (QAbstractButton, QApplication, QDialog, QDialogButtonBox,
    QSizePolicy, QWidget)

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        if not Dialog.objectName():
            Dialog.setObjectName(u"Dialog")
        Dialog.resize(640, 480)
        self.buttonBox = QDialogButtonBox(Dialog)
        self.buttonBox.setObjectName(u"buttonBox")
        self.buttonBox.setGeometry(QRect(10, 440, 621, 32))
        self.buttonBox.setOrientation(Qt.Horizontal)
        self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)

        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)

        QMetaObject.connectSlotsByName(Dialog)
    # setupUi

    def retranslateUi(self, Dialog):
        Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Dialog", None))
    # retranslateUi


<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Dialog</class>
 <widget class="QDialog" name="Dialog">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>640</width>
    <height>480</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Dialog</string>
  </property>
  <widget class="QDialogButtonBox" name="buttonBox">
   <property name="geometry">
    <rect>
     <x>10</x>
     <y>440</y>
     <width>621</width>
     <height>32</height>
    </rect>
   </property>
   <property name="orientation">
    <enum>Qt::Horizontal</enum>
   </property>
   <property name="standardButtons">
    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections>
  <connection>
   <sender>buttonBox</sender>
   <signal>accepted()</signal>
   <receiver>Dialog</receiver>
   <slot>accept()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>248</x>
     <y>254</y>
    </hint>
    <hint type="destinationlabel">
     <x>157</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
  <connection>
   <sender>buttonBox</sender>
   <signal>rejected()</signal>
   <receiver>Dialog</receiver>
   <slot>reject()</slot>
   <hints>
    <hint type="sourcelabel">
     <x>316</x>
     <y>260</y>
    </hint>
    <hint type="destinationlabel">
     <x>286</x>
     <y>274</y>
    </hint>
   </hints>
  </connection>
 </connections>
</ui>

 

728x90
반응형

'PYTHON(파이썬) > PYSIDE6(GUI)' 카테고리의 다른 글

PYSIDE6 QT리소스 시스템  (2) 2024.10.24
PYSIDE6 QT디자이너 사용하기  (0) 2024.10.24
PYSIDE6 이벤트  (0) 2024.10.24
PYSIDE6 창  (1) 2024.10.24
PYSIDE6 대화상자  (1) 2024.10.24