본문 바로가기

Software/Python42

PyQt5, QtableWidget 컬럼 너비 자동 조정 PyQt5에서 QtableWidget을 사용할 때 컬럼 너비를 조정하는 방법입니다. 방법1 table = self.ui.tableWidget table.setColumnWidth(0, self.width()*1/10) table.setColumnWidth(1, self.width()*2/10) table.setColumnWidth(2, self.width()*5/10) table.setColumnWidth(3, self.width()*2/10) 테이블의 컬럼은 4개가 있다고 가정하고 각 컬럼의 너비를 일정한 비율로 조정합니다. 컨텐츠 길이의 장단에 관계없이 정해진 비율대로만 조정합니다. 방법2 table = self.ui.tableWidget header = table.horizontalHeader() .. 2020. 9. 8.
Visual Studio Code로 만드는 파이썬 개발 환경 개인적으로 지금까지 파이썬 공부를 즐기지 못한 이유 중에는 IDE가 썩 맘에 들지 않았다는 점이 있는데요. 원래 저는 Visual Studio(VS) 신봉자라서 VS에서 C++과 아두이노 그리고 파이썬까지 모두 사용하고자 했습니다. 모든 걸 하나로 끝내려는 건 욕심이었는지, C++는 원래 VS의 기본적인 지원언어이고 아두이노도 C++ 기반이라서 VS의 개발환경은 매우 쾌적했지만 파이썬은 그렇지 못했습니다. 물론 파이썬을 더 편리하게 사용할 수 있게 해주는 확장 프로그램이 있는 것 같지만 유료이고 파이참이나 다른 파이썬에 맞추어진 IDE와 비교하면 이게 정말 VS가 맞나 싶게 뭔가 부족한 느낌이라 사용을 꺼리게 되었습니다. 그러다가 VS Code를 사용하기 시작했는데 파이썬도 지원하고 아두이노도 VS에서 .. 2020. 7. 17.
pyinstaller - 파이썬 코드를 실행파일(.exe)로 변환 ".py" 확장자의 파이썬 코드는 매우 작은 용량이지만 방대한 일을 처리할 수 있는 신기한 파일입니다. 하지만 컴퓨터에 파이썬 interpreter가 설치되어 있어야 하고 코드에서 사용한 다양한 라이브러리들이 모두 설치가 되어 있어야만 실행이 가능합니다. 그래서 내가 짠 코드를 다른사람에게 배포하기가 까다롭습니다. 이럴때 ".exe"의 실행파일로 묶어서 배포할 수 있게끔 하는 "pyinstaller"를 이용하는 방법입니다. (윈도우 환경에서 IDE로 Visual Studio를 사용하는 기준입니다. 참고해주세요.) pyinstaller 설치 먼저 파이썬에서 pip명령어로 pyinstaller를 설치합니다. >>> pip install pyinstaller Visual Studio환경에서 pyinstalle.. 2020. 7. 9.
SQLite 시작을 위한 기초 중에 기초만 요약 - CREATE TABLE, INSERT, DELETE, UPDATE, REPLACE SQLite DB를 사용하기 위해서 알아야 하는 최소한의 기본 명령을 정리하였습니다. 파이썬에서 SQLite를 연결해서 DB를 사용해보고싶었는데 전혀 기초가 없어서 기본적인 작업을 할 수 있는 기초중에 기초만 우선 훑었습니다. 원본문서는 아래 페이지입니다. 상세내용은 여기서 확인하세요. 그리고 SQLite를 사용함에 있어서 가장 중요한 명령어인 "SELECT"는 그 활용법이 너무 방대하여 별도로 다룰얘정입니다. SQLite Tutorial - An Easy Way to Master SQLite Fast This SQLite tutorial teaches you everything you need to know to start using SQLite effectively. You will learn SQL.. 2019. 7. 18.
[파이썬의 기본] 클래스 메소드(Class Method) & 스태틱 메소드(Static Method) 앞서 클래스를 정의하고 사용하는 기본적인 방법에 대해서 알아봤었는데요. ([파이썬의 기본] 클래스(Class)) 이런 기본적인 메소드의 사용방법을 인스턴스 메소드(Instance Method)라고 합니다. 메소드가 클래스의 인스턴스로 호출이 되고 첫번째 파라미터인 "self"로 인스턴스 자기자신이 자동으로 전달되는 방식입니다. 이 번에는 그외 사용방법인 클래스 메소드(Class Method), 스태틱 메소드(Static Method)에 대해서 정리하겠습니다. Class Methods 클래스 메소드는 클래스에서 호출이되고 인스턴스 메소드가 첫번째 파라미터로 자신의 인스턴스를 "self"로 전달하는 것과는 달리 "cls"라는 파라미터로 자신의 클래스를 전달합니다. 용도는 클래스 생성자에 다른 형태의 파라미터.. 2019. 7. 8.
[파이썬의 기본] 마술 함수(?) 매직 메소드 (Magic Methods ) Magic Methods 매직 메소드는 함수이름 앞과 뒤에 언더스코어(_) 두개가 연속으로 붙어있는 함수를 말합니다. 그러니까 “__name__” 이런식의 형태인데 앞에서 클래스를 예기하면서 컨스트럭터 매소드인 “__init__” 이 그런형태를 취하고 있었습니다. 이런 형태의 마법함수는 파이썬에서 그 이름을 미리 지정해 둔 사저예약함수들도 그 기능이 정해져 있습니다. 사용법 이런 마법함수는 어떤때 사용할까요? 먼저 가장 일반적인 용도는 오퍼레이터의 오버로딩용입니다. 오버로딩이라는 단어에 익숙하신 분들은 그 의미를 금새 알아차리실 수 있을텐데요. 저는 아직 초보라 예제를 보고나서 이해를 했습니다. 얼른 예제를 보겠습니다. 예제: class coordinate: def __init__(self, x, y):.. 2019. 6. 24.
[파이썬의 기본] 파일에서 읽고 쓰기 파일 읽기 파일내용을 읽어오고 파일에 어떤 내용을 저장하기위해서는 우선 파일을 열어주는 과정이 필요합니다. 그리고 사용이 끝나면 파일을 닫아주는 절차까지 마쳐야 합니다. 그렇지 않으면 다른 프로그램에서 그 파일을 접근해서 수정하거나 하지 못하거든요. 바로 코드를 보겠습니다. 예제: f = open("file.txt", "r") file = f.read() print(file) f.close() 이 예제는 “file.txt”에 포함된 모든내용을 화면에 출력해줍니다. 첫줄에서 open()이라는 함수를 이용해서 파일을 읽기전용(r)으로 연다음 “f”이라는 객체로 만들어 주었습니다. 그리고 read()함수를 사용해서 파일 내용을 읽어왔습니다. 파일을 열때 open()함수의 두번쩨 인자로 "r" 옵션이 사용되었는.. 2019. 5. 24.
[파이썬의 기본] 클래스의 상속 클래스의 상속 상속은 클래스들 간에 기능을 공유하는데 사용되는 방법입니다. 예를 들어, 조종사(Pilot)와 의사(Doctor)라는 직업을 가진 사람을 클래스로 표현한다고 생각해봅시다. 조종사는 날아다니고(fly) 의사는 치료(cure)를 하는 전혀 다른 직업의 사람이지만 두 사람 모두 이름이나 나이와 같은 일반적인 속성도 가지고있는 사람이라는 공통점이 있습니다. 이런 경우를 클래스로 표현한다고 하면 다음과 같이 표현할 수 있습니다. 예제: class Person: def __init__(self, name, age): self.name = name self.color = age class Pilot(Person): def job(self): print("I can fly") class Doctor(Pe.. 2019. 5. 24.
[파이썬의 기본] 클래스(Class) 클래스는 객체지향 언어의 대표적 특징이라고들 많이 얘기하는데요. 당연히 파이썬에서도 클래스를 원하는 객체지향프로그램 언어입니다. class c++과 마찬가지로 파이썬에서도 class란 키워드를 사용해서 클래스를 정의하고 클래스 내부에는 매소드라고 부르는 함수로 구성됩니다. 클래스의 형태는 다음과 같습니다. 예제: class chair: def __init__(self, color, legs): self.color = color self.legs = legs table = chair("red", 4) desk = chair("white", 4) print(table.color) 결과: 이 예제는“chair”라는 이름의 클래스가 “color”, “legs”라는 두개 속성을 가지고 있는것으로 정의되었고, “t.. 2019. 5. 22.
[PyQt 파이썬 GUI프로그래밍] Layout으로 창크기에 따라 창요소 크기도 같이 조절되도록 하기 GUI프로그래밍을 도와주는 PyQt에서 창크기에 따라 내부 요소들의 크기들이 자동으로 변경될 수 있도록 하는 방법을 알아보겠습니다. PyQt의 Qt designer를 이용해서 다음과 같은 형태의 프로그램 UI를 디자인했습니다. 키워드를 맨위에 있는 박스에 입력하고 검색버튼을 누르면 아래에 결과가 나타나는 그런 동작을 수행할 UI되겠습니다. 위젯 구성은 다음과 같습니다. 메인 윈도우에 Grid Layout을 먼저 깔고 lineEdit, pushButton, tableWidget을 베치하였습니다. Grid Layout은 내부에 웨젯 배치를 손쉽게 해주기 위해서 그리드형태로 위젯의 위치에 대한 가이드를 잡아주는 역할을 합니다. 그래서 필요한 위젯을 드레그 해서 Grid Layout 위로 가져가면 상하좌우에 하.. 2019. 5. 21.
[파이썬의 기본] 예외처리 (try, except, finally, raise) try, except 명령 예외는 어떤 예기치 못한 문제가 발생했을 때 발생하는 에러 메시지 같은 겁니다. 이런 예외가 발생하면 파이썬 프로그램은 중단됩니다. 이렇게 원치 않는 프로그램 중단을 방지하기 위해서는 적절한 예외처리가 필요한데 “try”, “except”가 바로 그때 사용하는 명령어입니다. 예제: try: var1 = 9 var2 = 0 print (var1 / var2) print("complete") except ZeroDivisionError: print("I can’t divide by ZERO") 위 예제는 크게 “tyr” 블럭과 “except” 블럭으로 나누어져 있습니다. “try” 블럭에서 변수를 2개 생성해서 각각 9와 0을 할당하고 이를 나눈 결과값을 출력하고 곧이어 “comp.. 2019. 4. 24.
[파이썬의 기본] 함수에 사용되는 특별한 기능 - 맵 & 필터(map & filter) 맵, 필터 함수는 리스트와 같은 반복 구조형을 더 다양하게 사용할 수 있도록 도와주는 파이썬 내장함수입니다. 맵(map) 맵은 함수와 이터러블(iterable)을 매개변수로 받고 함수에 이터러블내 맴버 각각을 차례대로 적용한 새로운 이터러블을 반환하는 기능을 수행합니다. 예제: def add_five(x): return x + 5 nums = [11, 22, 33, 44, 55] result = list(map(add_five, nums)) print(result) 결과: 맵 함수가 하는 기능은 람다함수를 이용해서 더 간단히 표현할 수도 있습니다. (람다에 대한 내용은 지난포스팅([파이썬의 기본] 함수에 사용되는 특별한 기능 - 람다(lambda) 함수)에서 확인해주세요.) nums = [11, 22, .. 2019. 4. 24.
[파이썬의 기본] 함수에 사용되는 특별한 기능 - 제너레이터(Generator) 제너레이터(Generator) 제너레이터는 리스트, 튜플과 같은 반복되는 구조의 형태인 이터러블(iterable)의 한 종류인데 함수와 “yield”구문을 사용하여 생성할 수 있습니다. 리스트와는 달리 제너레이터는 임의의 인덱싱이 불가하지만 for 루프를 통해서 반복연산은 가능합니다. 예제: def countdown(): for i in range(3): yield i print(list(countdown())) 결과: “yield” 키워드는 함수의 “return”키워드 대신 사용되는데, 지역변수인 결과값을 소멸시키지 않고 함수를 호출한 caller에게 반환합니다. 위의 예제에서 처럼 유한한 요소를 가진 제너레이터는 “list”함수를 이용해서 리스트형으로 변환도 가능합니다. 끝! 2019. 4. 24.
[파이썬의 기본] 함수에 사용되는 특별한 기능 - 람다(lambda) 함수 람다(Lambdas) 함수 람다함수는 개념적으로는 익명의 함수로 사용즉시 버리는 일시적인 함수이다(?)라고 하는데요. 무슨소리인지 잘 이해가 안가지만 기억할 만한것은 익명의 함수라서 함수 이름조차 없이 사용할 수 있고 그리고 일시적으로 사용하는 함수라서 런타임에 사용가능한 장점이 있는 그런 함수 정도로 개념을 잡고 시작하면 되지 않을까 싶습니다. 이것도 뭔말인가 싶네요 ㅎ “def” 키워드를 사용해서 만드는 일반적인 함수의 생성은 보통 자동적으로 변수에 할당이 됩니다. 정수나 문자열 같이 변수에 할당하는 절차없이 생성할 수 있는 객체들과 다른점인데 “lambda”구문을 이용하면 함수에서도 똑같이 사용할 수 있고 이런 방식을 익명함수라고 한다고 합니다. 이런 방법은 간단한 함수를 다른 함수의 매개변수로 전.. 2019. 4. 24.
파이썬(Python) GUI 프로그래밍의 기본 (PyQt5 Dialog & Main Window 사용) 지난 포스팅에서 Python GUI프로그래밍의 묻지마 튜토리얼을 다룬적 있었습니다. PyQt5로 Python GUI 프로그래밍 시작하기 - Hello World! 출력 Hello world!, 모든 언어의 시작점이죠 지난글에서 준비해둔 파이썬 GUI 개발환경에서 Hello World 출력하기를 실습해 보겠습니다. 새 파이썬 프로젝트 생성 VS를 열어서 새로운 프로젝트를 생성합니다. 파이썬.. kwonkyo.tistory.com 그때는 저도 파이썬의 문법을 하나도 몰랐고 개념도 없었기 때문에 그냥 그런가 보다 했었는데요. 조금 공부를 해보니 코드의 의미가 보이기 시작해서 더 늦기전에 Pyqt5를 사용한 윈도우즈 프로그램의 소스구성에 대한 기본적인 내용을 다루어 보려 합니다. (이미 늦었고 아직도 이해안되는.. 2019. 4. 19.