본문 바로가기
Study(매일매일한걸음씩)/Python

#1 python pyside6 qt로 해보기(pyside6-uic.exe 없어서 고생함)

by 여유러운백수삶개발자 2023. 1. 10.
pyside6-uic 찾아도 없어서 찾다가 고생고생 하다가 다른 사람도 고생하는 거 방지 하기위해 작성함
두가지 방법 있음 ui(qt designer 파일)을 이용하는 방법
나머지하나는 ui파일을 py로 변환해서 이용하는 방법이 있다.

 

  1. 순서(기본)
    1. python 설치(홈페이지)
      1. https://www.python.org/
    2. vsc(visual studio code) 설치(홈페이지)
      1. https://code.visualstudio.com/
    3. qt for python 설치(비주얼 스튜디오 코드 안에서)
    4. pyside6 설치
      1. pip install PySide6
    5. 프로젝트 만들기
    6. coding
      1. https://doc.qt.io/qtforpython/tutorials/basictutorial/widgets.html 참조
import sys
from PySide6.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
label = QLabel("Hello World!")
label.show()
app.exec()

 

qt designer 와 같이 사용해보기

1. https://doc.qt.io/qtforpython/tutorials/basictutorial/uifiles.html

 

Using .ui files from Designer or QtCreator with QUiLoader and pyside6-uic - Qt for Python

Previous Displaying Data Using a Tree Widget

doc.qt.io

2. main_uic.py(첫번째 방법 ui 파일 그대로 사용하기)

# File: main.py
import sys
from PySide6.QtUiTools import QUiLoader
from PySide6.QtWidgets import QApplication
from PySide6.QtCore import QFile, QIODevice

if __name__ == "__main__":
    app = QApplication(sys.argv)

    ui_file_name = "mainwindow.ui"
    ui_file = QFile(ui_file_name)
    if not ui_file.open(QIODevice.ReadOnly):
        print(f"Cannot open {ui_file_name}: {ui_file.errorString()}")
        sys.exit(-1)
    loader = QUiLoader()
    window = loader.load(ui_file)
    ui_file.close()
    if not window:
        print(loader.errorString())
        sys.exit(-1)
    window.show()

    sys.exit(app.exec())

3. ui 파일 만들기(vsc explorer에서 오른쪼 마우스 누르면된다.) - create 하면 qt desiner가 뜬다.(qt for python 설치 되어 있으면 메뉴가 나타남)

대략 만듬(저장)

ui 파일이 생성됨(untitle.ui)

4. 실행

 


두번째 방법( ui -> py로 변환)

1. compile QT UI File (ui_untitled.py 파일 생성)(앞에 ui 붙는거는 설정에 그렇게 되어 있다)

- 설정에서 자동으로 변환되게 설정이 되어 있다(기본값)(ui 파일 저장하면 py 파일이 생성됨)

자동 변환 및 py파일로 변환시 ui_로 시작하라고 설정이 되어 있다.

import sys
from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtCore import QFile
from ui_untitled import Ui_MainWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    sys.exit(app.exec())

ui_untiled는 py로 변환된 파일 이름

Ui_MainWindow는 ui_untilted안에 있는 class

잘됨


고생했던것

1. PySide6을 설치하면 designer가 설치 된다. 그것도 모르고 qt_designer를 따로 설치 해서 먼가 혼동이 생겨서 compile ui, create qt ui 이런것이 안되었다. 

- qt_designer 파일 삭제후 정상적으로 잘됨

2. 패스 지정이 안되어서 안되는 경우

- cmd나 터미널 창에서 designer 입력이 되는지 확인 안될 경우에는 컴퓨터 환경설정에서 path에 designer를 추가해서 해결함

C:\Users\사용자이름\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\PySide6

3. ui 파일 py로 컴파일 했는데 안되는 경우

- 처음에 꼬여서 안되다가 설정에 compile에 위 경로에 있는 uic를 이용해서 컴파일 하니까 문제가 됨

-아래에 uic 경로를 넣었더니 문제가됨(컴파일은 되나 동작 안됨), 삭제하고 정상적으로 됨

댓글