2022년 5월 1일 일요일

Mac 에서 Qt Designer 와 VSCode를 연동해봅니다.

 저 같은 경우는 miniconda로 가상환경을 설치하였기에 아래와 같이 하여 VSCode를 시작하였습니다. (% brew install --cask visual-studio-code 으로 설치)


1. PYQT Intergration 익스텐션을 설치합니다. (VSCode 가 파이썬을 작성할 수 있는 환경이라 가정합니다)


2. 설정화면으로 이동합니다.


3. Extension > Qt for Python > Edit in settings.json을 선택하여 json 파일을 수정합니다.


4. 저같은 경우는 아래와 같습니다. 수정이 끝났으면 저장합니다.(중요!)
"python.defaultInterpreterPath": "/Users/jglee/opt/miniconda3/envs/orange3/bin/python",
"terminal.integrated.inheritEnv": false,
"editor.hover.enabled": false,
"editor.hover.sticky": false,
"editor.inlayHints.enabled": false,
"qtForPython.uic.path": "/Users/jglee/opt/miniconda3/envs/orange3/bin/pyside6-uic",
"pyqt-integration.qtdesigner.path": "/Applications/Qt Designer.app/Contents/MacOS/Designer",
"qtForPython.designer.path": null

만약 PyQt5 과 pyside6 가설치되어 있지 않으면 해당 가상환경상태로 이동한다음 
$pip insatll PyQt5
$pip install pyside6
맥의 파인더에서 응용프로그램 > Qt Designer > 마우스 우측 크릭 > 패키지 내용보기 > Contents > MacOS 하여보면 Designer 경로를 할수 있습니다.

5. 이것이 정상으로 설정되면 


test.ui 에서 마우스 우측크릭을 하면 (2)에서와 같이 미리보기, Qt Designer 불러내기, .ui 를 .py 로 컴파일하여 프로그램을 쉽게  할 수 있습니다. 참고로  컴파일된 내용의 일부를 보여드립니다.
from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(376, 274)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.testButton = QtWidgets.QPushButton(self.centralwidget)
self.testButton.setGeometry(QtCore.QRect(120, 70, 113, 32))
self.testButton.setObjectName("testButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 376, 24))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)

self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.testButton.setText(_translate("MainWindow", "PushButton"))

원래 이것은 디자이너에서 볼 수 있어야 하는데 경량 디자이너에서는 실행이안됩니다.(인터넷에 관련 질문은 많으나 그렇다할 해결방법을 알려주지 않더군요)

6. (5)번의 아랫부분에 아래 코드를 추가하고 관련 모듈을 추가하면 코딩이 끝납니다. 이러한 방식으로 하면 코드 자동완성기능이 되어서 코딩이 쉬워집니다.

self.te 하면 self.testButton이하를 아주 쉽게 자동완성 할 수 있습니다.

전체코드 중복부분 생략함

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QMainWindow

class Ui_MainWindow():
def setupUi(self, MainWindow):
................

class WindowClass(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.testButton.clicked.connect(self.btnClick)
def btnClick(self):
self.testButton.setText('test')
print("버튼이 클릭되었습니다.")
if __name__ == "__main__":
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()

댓글 없음:

tensorflow gpu 사용하기에서

 tensorflow 설치시 주의해야 한다. # Anything above 2.10 is not supported on the GPU on Windows Native python - m pip install "tensorflow<2.11...