레이블이 VSCode인 게시물을 표시합니다. 모든 게시물 표시
레이블이 VSCode인 게시물을 표시합니다. 모든 게시물 표시

2024년 3월 14일 목요일

맥 가상환경상태에서 vscode(또는 다른 응용프로그램) 실행하기

 

맥 터미널에서 가상환경으로 들어간다음 vscode를 실행하고 커널선택을 하려고하면 가상환경이 나타나지 않는다. 

가상환경 찾기를 하여 인터프리터 링크를 선택하면  



전혀 엉뚱한 환경을 들어가서 pip list 해보면 설치된 패키지가 보이지 않는다.

이것은 python -m venv  venv --version=3.8 형식으로 기존에 설치된 버전을 링크하여 생성했기 때문인것 같다.

설정에서 settings.jason에서 편집을 찾아

"python.defaultInterpreterPath": "/Users/gilson/venv",


위와 같이 고쳐주면 된다.

! 아래내용 추가(2024. 4. 5)

viscose 에서는 해결했는데 다른 응용프로그램(RapidMiner)에서 같은 문제를 일으켜서 아에 링크를 찾아가서 python3.8 (실행파일)을 복사해와 가상환경 bin 폴더에 붙여넣기 하였더니 해결되었습니다.

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_()

Mac에서 QtDesigner로 윈도우(창)을 만들고 실행해보기(헬로우 월드)

 맥에서입니다. Qt Designer 경량버전 설치

앞에서 Qt Designer경량버전을 설치하였습니다. 런처패드로가서 실행합니다.

1. Main Window 로 지정하고 > Create 버튼을 선택합니다.

2. 왼쪽에서 pushButton 위젯을 드래그하여 (2)와같이 위치시키고 > (3)과 같이 이름을 testButton으로 바꾸어줍니다(이 이름은 기억해야 합니다) > 그리고 test.ui 라는 이름으로 저장해둡니다. 저장위치를 기억해야 합니다.


3. 같은 위치에 VSCode 나 텍스트 편집기등으로 아래와 같이 작성하여 test.py라는 이름으로 저장하고 실행합니다.

import sys
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow

form_class = uic.loadUiType("./test.ui")[0]

class WindowClass(QMainWindow, form_class):
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_()

4. 윈도우가 하나 나타나면 버튼을 크릭해봅니다. 아래와 같이 버튼의 캡션이 "test"로 바뀌고 콘솔창에 "버튼일 클릭되었습니다." 라고 표시됩니다.


5. 델파이 보다는 번잡하군요. 그렇게 생각해보면 델파이는 정말 대단해요....


델파이의 부활(Antigravity와의 만남)?

 델파이 프로그램을 사용하여 개인적으로 필요한 프로그램을 생성해 왔는데, 얼마전부터 파이썬으로 옮겨갔다.  그런데 Google 의 Antigravity를 만나고 나서 델파이에 대한 미련을 버리지 못해  제미나이가 Delphi이에 대한 학습도 엄청 했을...