PyQt에서 제공하는 Qt Designer 툴을 이용한 UI를 이용해본다. 

 

1. C:\ProgramData\Anaconda3\Library\bin  경로의 designer.exe 를 실행한다.

(PC에 따라서 위치는 다르지만 Anaconda3\Library\bin 폴더를 찾는다. 숨김 처리 되어있으므로.. 경로는 찾으면 저장해두기)

 

 

2. 처음 실행 시 뜨는 팝업에서 new window 실행

 

3. 원하는 위젯, 버튼 등 UI 설정 

4. 다른이름으로 저장 (.ui)

 

5. .ui 파일을 C:\Users\M\PycharmProjects\pythonProject\venv\Lib\site-packages\PyQt5\uic 로 복사  // 꼭 필요한 과정은 아님. 경로 따로 설정해주기 귀찮으니까 

이 폴더로 ui파일을 옮기는 이유는, PyQt5를 설치할 때 함께 설치되는 pyuic.py 때문인데, 

이는 XML로 구성된 UI 파일을 파이썬 코드로 변환해주는 파일이다.  

Qt Designer 프로그램으로 생성한 UI 파일을 메모장으로 열어보면

XML 이라는 언어로 되어 있다.  

파이썬은 XML 코드를 바로 실행할 수 없으므로 XML코드를 파이썬 코드로 변환해줘야 한다. 

나는 PyQt를 아나콘다가 아닌 PyCharm에서 설치했으므로 파이참폴더에 uic 패키지가 생성되어 있다.

 

6-1 uic 폴더에 Shift+우클릭 -> 여기서 명령창 열기 or 여기서 Powershell 창 열기 -

python -m PyQt5.uic.pyuic -x untitled.ui -o untitled.py 입력

 

이렇게 하니 오류가 발생해서 그냥 6-2로 하니까 됐다.

 

 

6-2 PyCharm의 PowerShell 창에  pyuic5 -x 경로\입력.ui -o 경로\출력.py

 

PS C:\Users\M\PycharmProjects\pythonProject> pyuic5 -x C:\Users\M\PycharmProjects\pythonProject\venv\Lib\site-packages\PyQt5\uic\untitled.ui -o C:\Users\M\PycharmProjects\pythonProject\venv\Lib\site-packages\PyQt5\uic\untitled.py

 

 

7. py파일 생성 완료 

 

PyCharm의  Powershell 창에서 만들어진 py 파일을 실행해볼 수 있다.

 

or uic 폴더에서 파이참 프로젝트 폴더로 py 파일을 만들도록 경로를 지정해주거나 프로젝트 디렉토리로 옮겨주면 쉽게 실행 가능.

대략적인 뼈대를 Qt Designer로 만들어놓고 

여기부터 코드를 수정해서 사용해도 될 것 같다. 

 PyQt에서는 다른 위젯에 포함되지 않은 최상위 위젯을 특별히 윈도우(window)라고 한다.

참고로 PyQt에서는 윈도우를 생성하기 위한 클래스로 QMainWindowQDialog 클래스가 일반적으로 사용된다.

 

 

import sys
from PyQt5.QtWidgets import *

class MyWindow(QMainWindow):  # MyWindow라는 클래스를 생성하고, 이 클래스는 QMainWindow 라는 기존에 PyQt에서 제공하는 클래스를 상속받는다.
    def __init__(self):  # 인수 정의
        super().__init__() #부모 클래스에 정의된 내용 호출.
        self.setWindowTitle("PyStock") # 윈도우 창의 타이틀
        self.setGeometry(300, 300, 900, 400) #위치, 크기(가로,세로) 조절

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mywindow = MyWindow()
    mywindow.show()
    app.exec_()

 

PyQt 는 파이썬으로 GUI를 생성하기 위한 툴키트 중 하나이다. 

 

GUI ? Graphical User Interface. 그래픽 요소를 통해 사용자와 컴퓨터 간에 인터페이스를 구현한 방식. 

 

파이썬에서 GUI를 만드는 방법은 몇 가지 있다. 

 

1. PySimpleGUI 이용

2. PyQt5 이용 (아나콘다 공식 제공)

3. TkInter 이용 (파이썬 기본 제공)

 

 

엑셀 수정 파일은 PySimpleGUI를 이용해서 만들었었다. 

PyQt5가 책도 있고 더 넓게 사용되는 것 같으니 PyQt도 사용해보도록 한다. 

 

Terminal 창에 

pip install pyqt5

 

를 입력해 PyQt를 설치한다. (회사에서 설치 시 명령어 뒤에

아래를 추가해준다. ※ pip 설치 시 SSL Error  참조 )

 

--trusted-host pypi.org --trusted-host files.pythonhosted.org

 

pip install pyqt5-tools

 

를 설치해주면 GUI를 만드는데 유용한 designer.exe 파일을 받을 수 있다고 하는데.. 

설치가 안되고 오류가 떠서 그냥 아나콘다를 받았다 (*아나콘다 설치 시 기본 포함)

회사 컴의 경우

C:\ProgramData\Anaconda3\Library\bin

경로의 designer.exe 를 실행한다.  

 

창 띄우기

import sys
from PyQt5.QtWidgets import *

app = QApplication(sys.argv)
label = QLabel("Hello PyQt")
label.show()
app.exec_()

 

1. sys 모듈 임포트 (별도의 설치 필요 없다.) 

 

2. PyQt5 디렉토리의 QtWidgets 파일에 있는 모든 것 (*) 을 임포트 (C:\Users\M\PycharmProjects\pythonProject\venv\Lib\site-packages\QtWidgets.pyd)

 

3. QApplication 이라는 클래스의 객체를 생성, app라고 명명.  

sys.argv 값은 현재 소스코드에 대한 절대 경로이다.  QApplication 클래스의 인스턴스를 생성할 때 생성자로 이 값을 전달해야함.

 

4. QLabel 이라는 클래스의 객체를 형성.

5. show() 메서드를 통해 창 라벨로 텍스트 출력 

6. app을 무한루프로 실행 (execute - 한번 실행하고 끝나는게 아니라 사용자가 끌 때까지 창을 유지시켜주는 역할)

 

 

 

'파이썬 > GUI 만들기' 카테고리의 다른 글

[PyQt] Qt Designer를 이용한 UI 만들기 -> py로 변환하기  (0) 2021.12.27
[PyQt] 위젯과 윈도우  (0) 2021.12.22
버튼 눌러서 입력 창 추가  (0) 2021.12.16
GUI 아이콘 만들기  (0) 2021.11.29
GUI 만들기  (0) 2021.11.26

버튼을 누르면 추가할 레이아웃을 설정한다. 

 

def new_layout(i):

     return ####


def new_layout(i):
    return [[sg.T("접근할 시트 이름: "), sg.InputText(key=("-shname-", 0),size=(8, 5)), sg.T("접근할 셀 주소"), sg.InputText(key=("-addcol-", 0),size=(3, 5))]] #추가하면 i번째 딕셔너리가 됨

 

애초에 시작 창에 하나는 떠있을거라면 0번째 레이아웃을 정의한다. 

0번째 레이아웃에는 행(레이아웃) 추가 버튼이 있다. 

 

sg.Button(enable_events=True, image_data=PLUS_ICO, key="-plus-")

or

sg.Button('+', key="-plus-")  

 

이미지를 사용하지 않고 문자를 사용해도 된다.


column_layout = [
    [sg.T("수정할 파일 선택: ")],
    [sg.Input(), sg.FilesBrowse('Load', font=('Verdana', 10))],
    [sg.T("접근할 시트 이름: "), sg.InputText(key=("-shname-", 0),size=(8, 5)), sg.T("접근할 셀 주소"), sg.InputText(key=("-addcol-", 0),size=(3, 5)), sg.InputText(key=("-addrow-", 0),size=(3, 5)), sg.T("수정할 값"), sg.InputText(key=("-val-", 0),size=(8,5)), sg.Button(enable_events=True, image_data=PLUS_ICO, key="-plus-")]
]

 

본격적으로 레이아웃을 설정하고, 

위에서 정의한 기본 레이아웃(0)을 불러와 사용한다. (불러와 사용안하고 그냥 layout에서 column layout 내용을 정의해도 된다.)

 

layout = [
  
    [sg.Column(column_layout, key='-Column-')],
    [sg.In(), sg.FolderBrowse('Save Dir', font=('Verdana', 10))],  # 저장경로
    [sg.Button('Save', font=('Verdana', 10)), sg.Button('Exit', font=('Verdana', 10))]]
    
window = sg.Window('Excel Auto Change for xls -ver2.0', layout)

 

 

 

'-plus-' 로 정의된 버튼이 눌리면 

최대 5행까지 추가 가능 (i<##변경 가능)

 

window.extend_layout(window['-Column-'], new_layout(i))

i=i+1

if event in ('None', 'Exit'):
    break
elif event == '-plus-':
    if i<5:
        window.extend_layout(window['-Column-'], new_layout(i))
        i += 1

 

'파이썬 > GUI 만들기' 카테고리의 다른 글

[PyQt] 위젯과 윈도우  (0) 2021.12.22
[PyQt] 기초  (0) 2021.12.21
GUI 아이콘 만들기  (0) 2021.11.29
GUI 만들기  (0) 2021.11.26
.py 파일 .exe로 변환하기  (0) 2021.11.26

python -m pip install pyinstaller 를 Terminal 에 입력하여 pyinstaller를 설치한다. 

 

구글 검색해보면 windows의 cmd 창을 열라고 되어있으나 그냥 PyCharm의 Terminal 창에 쳐서 실행하였음. 

 

Terminal에 지정되어있는 C:\Users\M\PycharmProjects\pythonProject 폴더 안에 원하는 ###.py 파일이 있다면 그냥 

pyinstaller ###.py 입력하면 exe 만드는 과정이 실행된다. 

아니면 pyinstaller 경로 .py를 입력해준다. (경로 입력 시 구분자가 \인지 \\인지 / 인지 굉장히 헷갈리고 어디는 이렇게 어디는 저렇게 써있어서.. 나중에 확인해볼 예정)

 

 C:\Users\M\PycharmProjects\pythonProject 의 dist 폴더에 ###.py의 '###' 이름의 폴더가 생기고

###.exe 및 기타 필요한 파일들이 생성되어있다.


dll 파일 등 기타 필요한 파일들이 폴더로 생기는게 싫으면 

pyinstaller --onefile (혹은 -F) ###.py 를 쓴다고 하는데 집에서 해보니 onefile 이나 -F 를 사용하면 알약이 자꾸 바이러스라고 잡고 지운다.. 

알약 경고 무시하고 실행하려고 하면 권한이 없다고 뜨고 관리자 권한으로 실행도 안됨.. 

결국 파일 하나로 합쳐서 .exe로 출력하는 건 실패하고 원인은 다음에 찾아보기로 한다. 

 
아이콘 지정은 --icon '경로/ ###.ico' 

(처음 만들어진 폴더에서는 바뀐 아이콘으로 안보이는데 한번 실행하거나 바로가기 파일 만들면

지정해준 icon으로 보인다. ico 파일 만드는거는 convertio.co 사이트 가서 jpg 파일 넣어주면 변환 후 다운 가능)

 

콘솔 안뜨게 하는 건 --noconsole (혹은 -w)

 

알약이 자꾸 바이러스라고 지울 때

 

pyinstaller -w' 'C:\Users\ASUS\PycharmProjects\pythonProject\forxls.py'


pyinstaller --icon=C:\Users\ASUS\PycharmProjects\pythonProject\teemo2.ico 'C:\Users\ASUS\PycharmProjects\pythonProject\forxls.py'

 

 

위 두개의 명령 시 정상적으로 exe 생성됨.

 

경로에 ' ' 붙여줄 것.

ico의 경로에는 ''를 붙이지 말 것.

경로 구분자 \ 사용

-F 는 여전히 안됨

경로에 있는 forxls.spec 파일을 사전에 지워줄 것. 

동명의 forxls 로 시작하는 폴더, exe 파일 등 지워줄 것

'파이썬 > GUI 만들기' 카테고리의 다른 글

[PyQt] 위젯과 윈도우  (0) 2021.12.22
[PyQt] 기초  (0) 2021.12.21
버튼 눌러서 입력 창 추가  (0) 2021.12.16
GUI 아이콘 만들기  (0) 2021.11.29
GUI 만들기  (0) 2021.11.26

+ Recent posts