본문 바로가기

전체 글291

파이썬 클래스. 구조체 1. 클래스 선언을 하되 선언만 해두고 안에 새부내용 없을 경우 pass를 사용 class Calculator(): pass 2. 생성자가 없는 타입의 클래스 클래스를 선언할 때 생성자가 필수인 것은 아니다. class Test1(): var1=1 var2=2 var3=3 def fun1(self,input1,input2): print("출력값은 input1= %d, input2=%d" %(input1,input2)) print("var1값은 %d " %self.var1) #참고중요사항 print(var1값은 %d " %var1) #이렇게하면 실행안된다. 클래스 안에 var1 선언돼있지만 self 안붙이면 인식못한다. test_var=Test1() test_var.fun1(5,6) #출력결과: 출력값은 .. 2021. 12. 2.
PyQt . Context Menu (마우스 우클릭 메뉴 만들기) 4.6 컨텍스트 메뉴 - 공학자를 위한 PySide2 (wikidocs.net) 취미로 하는 프로그래밍 !!! :: PyQt5 -- context menu 사용법 3가지 (QTableWidget 사용함) (tistory.com) 위 두사이트 참고하여 공부해서 정리할 것 context menu란? 마우스 오른쪽 눌렀을 때 저렇게 메뉴 띄우는 기능을 말한다. import sys from PyQt5.QtWidgets import * from PyQt5 import QtCore class MyWindow(QMainWindow): def __init__(self): super().__init__() self.setupUI() def setupUI(self): self.setGeometry(800, 200, 800.. 2021. 12. 2.
PyQt 클래스 상속에 대하여 파이썬. 클래스 상속과 생성자에 대하여. 그리고 super에 대하여 (tistory.com) (위의 글 참고하면 배경지식 습득가능) PyQt 모듈에는 매우 많은 다양한 클래스가 사전에 정의되어있음 이런 클래스에 정의된 메소드 중에, 유저가 메소드 오버라이드를 해서 재정의 해서 써야하는 케이스가 종종있다. 그 경우, PyQt에서 제공하는 클래스를 상속 받아서 임의의 클래스를 만들어야하는데 아래 예시를 보자. QListWidget 클래스를 상속받아서 drop_list 라는 임의의 클래스를 정의하고 있다. class drop_list(QListWidget): def __init__(self,input): super(drop_list,self).__init__(input) #super().__init__(inp.. 2021. 12. 1.
메소드 오버라이딩/ 오버로딩 개념 메소드 오버로딩이란 클래스 A 가 있고, 클래스 A를 상속받아서 만든 클래스 B가 있을 때 클래스 B는 클래스 A를 상속받았기 때문에, 클래스 B 에서는 클래스 A에 정의된 fun_A를 호출 할 수 있음. 근데 이 때, 클래스 B 에서 fun_A를 다시 재정의해서 원래 클래스 A에 정의된 fun_A랑 별개로 기능하는 펑션을 만들어 쓰는걸 메소드 오버로딩이라고 한다. 즉, 자식이 부모의 메소드를 그대로 안쓰고 다시 재정의해서 쓰는걸 말한다. class paraent(): def fun_a(self): print("나는 부모의 펑션이다.") class child(paraent): pass class child_override(paraent): def fun_a(self): print("나는 물려받은거 재정의.. 2021. 11. 28.
임베디드 리눅스 그리고 부트로더 그리고 u-boot ※ 엄청 예전에 교육들은거 기억나는대로 대강 쓴거라 틀리고 부정확한 내용이 많은듯. 나중에 공부해서 내용 보강 필요. 우선은 대강 개요만 적어놓기 임베디드 리눅스 SW가 실행될 타겟보드가 있다. 이 SW가 타겟보드에서 실행되려면 이 SW가 타겟보드의 Flash 에 Flashing이 되어있어야 한다. 타겟보드에 JTAG이 있다면 JTAG을 이용해서 Flashing을 하면 될 것이다. JTAG이 없는 경우 취할 수 있는 방법중에 부트로더를 사용하는 방법이 있다. 부트로더도 종류가 많은데 유명한 것중 하나가 U-Boot 이다. (부트로더 SW이름임) U-Boot를 사용해서 타겟보드에 리눅스 SW를 Flashing 할 수 있다. 근데 생각해보면 U-Boot도 SW 니까, U-Boot가 타겟보드에서 실행되려면 U.. 2021. 11. 25.
빌드.컴파일 그리고 makefile에 대하여 make 파일의 개요 리눅스 gcc에 대하여 1 (tistory.com)에서 gcc의 개념에 대해서 간략하게 알아보았다. gcc는 컴파일러 중 하나라고 하였다. 그래서 위 글에서 설명하는 내용은 사실 gcc에만 해당되는건 아니고 대부분의 다른컴파일러도 사용방법이 비슷하다. 근데 빌드해야 할 소스코드의 갯수가 몇 개 없을 때는 앞에서 말한것처럼 타이핑 해서 컴파일 하면되는데 프로젝트가 방대해지면 빌드 할 때 마다 이렇게 일일이 cmd에 명령을 쳐서 빌드하기가 어려워진다. 그래서 빌드와 관련된 이런저런 옵션,셋팅과 관련된 내용을 makefile 이라는 파일에 미리 작성해놓으면 일일이 cmd 창에 "gcc ... 어쩌구" 명령을 칠 필요가 없게 된다. 대신에 그냥 make 라는 명령만 실행하면 makefile.. 2021. 11. 25.
PyQt . Qcombobox 위 그림과 같은 창을 ComboBox라고 부른다. 아래 예시코드. 아래 예시에 있는거 외에도 여러가지 메소드가 있는데 궁금하면 직접 찾아보자. import sys from PyQt5.QtWidgets import * class MyWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Test") self.setGeometry(1000, 200, 700, 300) self.combo = QComboBox(self) self.combo.addItem("Text1") self.combo.addItem("Text2") self.combo.addItem("Text3") # 콤보박스에 선택된 인데스 달라지면 실행되는 func.. 2021. 11. 16.
PyQt.마우스이벤트 pyautogui 마우스제어 PyQt는 아니고 pyautogui라는걸 사용해서 마우스 이동,클릭 등의 제어를 해보자. pyautogui 모듈을 설치하자 pip install pyautogui 상세하게 알고 싶으면 pa 라이브러리 정의돼있는 파일 뜯어서 보면된다. 예시코드 참고 import pyautogui as pa #현재 마우스 좌표 출력 print(pa.position()) print(pa.position().x) print(pa.position().y) #마우스 이동(절대값 위치로 이동) pa.moveTo(100,400) #마우스 이동(현재위치에서 상대적으로 이동) pa.move(100,400) """마우스 클릭 관련 API 원형""" # def click # ( x=None, y=None, clicks=1, interval=.. 2021. 11. 16.
운영체제 로더의 개념 컴파일.링킹을 통해 만들어진 exe 파일은 하드디스크에 파일형태로 저장된다. 이 exe 파일이 실제로 cpu에 의해 실행이 되려면 파일의 내용이 메모리에 적재되야한다. 디스크에 저장된 exe 파일을 유저가 실행했을 때 파일의 내용을 메모리에 옮겨담는 역할을 하는 것이 로더이다. 이러한 로더가 윈도우와 같은 운영체제에 구현되어 동작되고 있는 것이다. 한편, 로더가 sw를 메모리에 적재하는 기법은 다양한 기법이 존재한다. 이때 가장 핵심이 되는 내용은 sw 내에서 (프로세스에서) 정의되어 있는 메모리주소를 어떻게 실제 컴퓨터의 HW 메모리주소에 매핑할 것인가? 이다. 다른 글에서 말했듯이 sw는 sw 별로 각자 독립적인 4Gbyte의 주소공간을 갖고 있고 그 주소를 바탕으로 기계어가 코딩되어있다. 그러나 로.. 2021. 11. 14.