본문 바로가기
반응형

1일1고(111GO)20

Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #9 이번엔 가장 활용도가 높은 편인 테이블뷰에 대해서 알려드리겠습니다. 우선;; interface{}를 사용해서 조금 고급지게 리스트박스를 위한 모델구조를 잡고 하면 보긴 좋긴 하겠으나 애초에 그냥 막 짜서 적용해서 쓰기 바쁜 와중에 만들어 쓴 코드고.. lxn/walk 의 샘플 코드에 존재하는 것들을 크게 건드리지 않고 사용하다보니 그닥 맘에 드는 구조는 아니라는 점은 미리 말씀드립니다. 우선 테이블을 구성하기 위해서는 2개의 구조체와 몇가지 메소드를 미리 작성하셔야 합니다. /** *TestListItem **/ type TestListItem struct { Name string Level int Sex int Class string checked bool } /** *TestListModel **/ .. 1일1고(111GO) | 2022. 1. 11.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #8 이번에는 .. 드롭다운박스를 다뤄보도록 하겠습니다. func comboTest1() { mgr, _ := NewWindowMgrNoResize("콤보박스 테스트", 640, 200, GetIcon()) dd1 := mgr.DropDownBox([]string{"1.하하", "2.호호", "3.ㅋㅋ", "4.ㅎㅎ"}) dd1.CurrentIndexChanged().Attach(func() { fmt.Printf("선택된 인덱스 : %d, 선택된 값 : %s\n", dd1.CurrentIndex(), dd1.Text()) }) mgr.StartForeground() } 요래 DropDownBox 메소드를 사용하시면 되구요 인자는 []string 배열로 지정 됩니다. 보통 드롭다운박스는 보여지는 텍스트 값 또.. 1일1고(111GO) | 2022. 1. 10.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #7 이번엔 각종 설정창 등을 만드는데 어찌보면 가장 유용하게 사용하는 체크박스(Checkbox)에 대해서 다뤄보도록 하겠습니다. func (m *WinResMgr) CheckBox(text string, checked bool, attachFunc func()) *walk.CheckBox CheckBox 메소드를 사용하시면 되구요. text string 인자는 체크박스 옆의 라벨 텍스트를 지정하는거고 checked bool 은 초기 기본 체크 상태입니다. true 면 생성시 체크가 된 상태로, false 이면 생성시 체크가 안된 상태로 생성됩니다. attachFunc func() 인자는 체크박스의 체크 상대가 변경될 시에 호출되는 이벤트 핸들러 함수를 지정하면 됩니다. func checkBoxTest1() .. 1일1고(111GO) | 2022. 1. 3.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #6 이번엔 EditText? EditBox? 여튼;; 텍스트고 숫자고 입력을 받는 놈을 다뤄보겠습니다. func (m *WinResMgr) NumberEdit() *walk.NumberEdit func (m *WinResMgr) LineEdit(ro bool) *walk.LineEdit func (m *WinResMgr) TextEdit(ro bool) *walk.TextEdit func (m *WinResMgr) TextArea(ro bool) *walk.TextEdit 이정도 되겠습니다.. ro bool 인자가 있는 놈들은 read only 에 대한 flag입니다. ro 값이 true 이면 수정이 불가능한 놈이 되겄지요. 각 함수의 차이점을 말씀 드리자면 .. NumberEdit - 숫자만 입력 가능한 .. 1일1고(111GO) | 2021. 12. 23.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #5 이번에는 각 UI구성 요소들에 대한 부분을 진행 해보도록 합시다. 대충 일반적으로 말하는 라벨(Label, Static Text), 에디트박스, 체크박스, 리스트박스, 이미지컨트롤, 콤보박스 이딴 것들에 대해 논해보도록 합니다. 이러한 놈들은 얼찌 배치 할지는 이전 시간에 다뤘으니까 이전글들 참고 하시고요, 그런 부분들은 직접 해보시면 충분할 거구요.. 그정도 코드도 직접 안짜보고 이해할꺼면 개발자 때려 쳐야죠.. 어디 ㅋㅋ 그런 정신 머리로 개발자 나부랭이를 해보겠다고 크앙! 우선 가장 많이 쓰이는 놈중 하나인 라벨을 먼저 갑시다. /** *MultiLineLabel **/ func (m *WinResMgr) MultiLineLabel(text string) *walk.Label { ne, _ := w.. 1일1고(111GO) | 2021. 12. 17.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #4 Go로 윈도 네이티브 GUI 줘 패기... 4번째 입니다. 이번엔 레이아웃에 대한 부분을 다뤄보도록 합니다. 앞서 C/C++에서 윈도 API를 가지고 GUI 어플리케이션을 만드는게 매우 비효율적인 노가다 개삽질이라는 식의 표현을 한적이 있는데요. 그 이유는 .. API에서 모든 UI객체는 전부다 윈도입니다. 창도 윈도 버튼도 윈도 에디트 박스도 체크박스도 스크롤바도 스크롤바 안의 상하단 버튼도 죄~~다 윈도입니다. 그 말은 그 하나하나를 다 CreateWindow 를 하고 그 각 객체별로 WndProc 같은 메시지 프로시저를 한땀 한땀 다 등록을 시켜야 한단 소리죠 그래야 키보드 입력이던 마우스 클릭이던 내용을 그리고 지우고 지지고 볶고 .. 가 가능합니다. 그렇게 수 없이 많은 반복적인 코드를 생성해야.. 1일1고(111GO) | 2021. 12. 10.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #3 Go언어로 윈도GUI .. 3번째 글입니다. 우선 관련 글들을 작성하면서 계속 사용하게될 소스파일 하나 먼저 던져 놓고 시작하겠습니다. walk_wrap.go 라고 매번 치기 귀찮으니 이놈, 저놈, 랩퍼 등등으로 쓸수 있으니 알아서 잘 보시기 바랍니다. 이놈에 대해 이래저래 쓰기 앞서서.. 웹 프로그래밍을 할때도 그렇고 GUI 프로그래밍을 할때도 그렇고 콘솔 프로그램과 달리 프로그램을 만들다 보면 메시지 박스를 띄워서 뭔가를 하거나 확인 창을 띄워야 하거나 하는 경우가 있습니다. 이런 놈들이죠.. 앞에 놈은 자바스크립트의 alert 같은 놈이고 뒤엣놈은 confirm 같은 놈입니다. 이렇게 메시지 박스나 확인창을 생성해주는 두 함수에 대해서 먼저 설명을 하고 넘어 가겠습니다. func MsgBox(msg.. 1일1고(111GO) | 2021. 12. 9.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #2 Go로 윈도 네이티브 GUI 프로그램만들기 2번째 입니다. 앞서 lxn/win, walk 2개 패키지는 go get 하셨을 테구요.. 보통 윈도 API 프로그래밍은 C/C++ 에서도 노가다의 최 정점에 놓여진 그런 놈입니다 ㅋㅋ 그게 싫어서 쓰는게 go 같은 언어들인거고 .. 그런 이유로 이 lxn/walk 의 경우에도 좀더 편하게 GUI를 만들수 있는 방법을 제공하는데요. 그게 lxn/walk 패키지에 포함된 declarative 라는 패키지 입니다. package main import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" "strings" ) func main() { var inTE, outTE *walk.TextEdit MainW.. 1일1고(111GO) | 2021. 12. 8.
Go로 MS 윈도 네이티브 GUI 프로그램 만들기 #1 앞서 크롤러 관련된 강좌를 하다 만게 있는데요.. 요청이 가장 많았어서 시작을 하긴 했는데 아무래도 크롤러가 개발자 입장으론 윤리문제가 좀 있는 영역이고 법적으로도 문제소지가 발생할 가능성이 매우 큰 영역이라 그걸 대놓고 강좌랍시고 하는건 좀 ;; 아닌것 같다는 피드백도 꽤 됫던 지라.. 크롤러 관련된 강좌는 하지 않겠습니다. 저는 Go개발에 MS의 Visual Studio Code를 사용합니다. 관련 사항은 이전 111GO 글을 참고바랍니다. 이번엔 Go언어로 마이크로소프트 윈도에서 동작하는 네이티브 GUI 프로그램을 만드는 법을 다뤄보려 합니다. 강좌라느니 그런 거창한건 아니구요. 그냥 피로곰이란 놈은 이런식으로 쓰고 있구나? 그정도.. 그리 잘 짜여진 코드도 아니고 배울만한 뭐 그런.. 그런거 아닙.. 1일1고(111GO) | 2021. 12. 8.
Go로 웹크롤러 만들기 #2 modu-print.tistory.com/44 Go로 웹크롤러 만들기 #1 원래 유튭 영상으로만 어떻게 해보려고 몇 번 녹화도 해보고 라이브도 진행해보고 했으나.. 영상보단 글로써 전달하는 게 효율적이란 생각이 들어서 .. 영상 대본 등을 이용해서 먼저 글을 올립 modu-print.tistory.com 1편에 이어서 진행해 보겠습니다. 우선 적당한 위치에 폴더하나를 만드시구요. 저는 GOWEB이라고 만들었습니다. 생성한 폴더를 선택후 우클릭 -> Code(으)로 열기하여 VSCode로 프로젝트를 엽니다. main.go 파일을 하나 생성 하십시요. package main func main(){ } import 용 패키지가 아닌 실행파일을 만들 예정이니 첫줄은 닥치고 package main! 빈 main .. 1일1고(111GO) | 2020. 11. 24.
Go로 웹크롤러 만들기 #1 원래 유튭 영상으로만 어떻게 해보려고 몇 번 녹화도 해보고 라이브도 진행해보고 했으나.. 영상보단 글로써 전달하는 게 효율적이란 생각이 들어서 .. 영상 대본 등을 이용해서 먼저 글을 올립니다. 영상은 포스트 작성후 이 글의 내용에 대해 간단히 설명하는 정도로 넘어가도록 하겠습니다. 유튜브 피로곰TV채널의 구독자와 시청시간이 충족돼서 광고도 달수 있게 되고 커뮤니티 기능도 사용 가능해지면서 전부터 생각하던 대리코딩과 관련한 글을 작성했고 한분께서 크롤링과 관련된 문의를 하셨습니다. 솔직히 별로 하고 싶지 않은 류의 프로그램이라 대리코딩 콘텐츠를 할까 말까 고민한 가장 큰 이유 중 하나가 이놈 때문인데 그래도 요청이 왔으니 진행을 해보겠습니다. 크롤러를 별로 하고 싶지 않았던 이유를 짧게 말해보자면.. 크.. 1일1고(111GO) | 2020. 11. 17.
[1일1GO/0010] 프로그램 아이콘을 변경하자GO! 1일1GO 10번째 시간에서 작업한 프로젝트 파일은 위 압축파일을 다운로드 받으시면 됩니다. 추가된 파일은 baseapp.png baseapp_icon.ico 수정된 파일은 Makefile main.go 입니다. 영상중 png 이미지를 ico 파일로 변경하는데 사용한 사이트 링크입니다. https://icoconvert.com/ ICO Convert - Create Icons From PNG & JPG Images Online ICO Convert is a free online icon maker and favicon generator, with it you can make icons from png or jpg images, just upload a photo of yourself, resize and.. 1일1고(111GO) | 2020. 5. 30.
[1일1GO/0009] 윈도 트레이 메뉴를 추가하자GO! 9번째 시간 윈도 트레이 메뉴(아이콘)을 추가하는 방법에 대한 영상입니다. 사용된 패키지의 github 주소 입니다 https://github.com/tadvi/systray tadvi/systray Go package for Windows Systray icon, menu and notifications - tadvi/systray github.com go get github.com/tadvi/systray 콘솔에서 위 명령으로 시스템에 추가 가능합니다. 이번 편 까지 작성된 전체 코드의 압축파일입니다. 1일1고(111GO) | 2020. 5. 17.
[1일1GO/0008] 크롬을 싹다 죽여보자GO!! 피로곰과 함께하는 Go프로그래밍 1일1GO! 8번째 영상에서 만든 프로그램의 소스코드입니다. 컴파일된 실행파일도 같이 들어 있으니 실행파일만 필요하신 분도 받아서 사용하심 되겠습니다. 실행 파일만 필요하실 분들을 위한 실행파일 링크! ( 64비트용입니다 ) 1일1고(111GO) | 2020. 5. 14.
[1일1GO/0007] 영상관련 자료 1일1고(111GO) | 2020. 5. 9.
[1일1GO/0006] 관련 자료 링크 및 파일들 영상중 설치한 rsrc 패키지의 깃헙 링크는 다음과 같습니다 https://github.com/akavel/rsrc akavel/rsrc Tool for embedding .ico & manifest resources in Go programs for Windows. ⛺ - akavel/rsrc github.com 콘솔에서 go get github.com/akavel/rsrc 위 명령을 치시면 됩니다. ( 아무 메시지 없이 넘어가면 성공한겁니다 ) 영상에서 작성한 매니페스트 파일들과 Makefile 입니다. 1일1고(111GO) | 2020. 5. 4.
[1일1GO/0005] Make를 하자 GO! 1일1고(111GO) | 2020. 5. 3.
[1일1GO/0003] 더 편리한 환경을 위한 추가 구성 MSYS2! Go는 CGO라는 형식으로 C언어 코드를 직접적으로 Go코드와 함께 사용도 가능하고 C/C++를 비롯한 다른 언어로 개발된 라이브러리나 DLL등을 끌어다 쓰는 짓 등도 가능한 언어입니다. 근본적으로 윈도, 리눅스, MacOS 등을 비롯 다양한 OS에서 실행 가능한 프로그램을 개발 가능하고 더군다나!! 윈도에서도 리눅스, MacOS 등 다른 OS용의 프로그램을 명령어 몇 줄만으로 같은 코드로 만들어 낼 수 있는 놈입니다! (캬~) 하지만 기본적으로 통합개발환경(IDE)을 공식적으로 제공하는 것이 아니기 때문에 윈도 프로그램에 사용되는 MS의 Visual Studio 같은 개발 툴 하나로 대부분의 모든 것을 커버해주는 편리성은 좀 떨어지는 편입니다. 여는 간에.. 그런 이유로 제 경우에는 리눅스 개발에서 사.. 1일1고(111GO) | 2020. 4. 27.
[1일1GO/0002] 모든 코드의 시작 package, import 1일1고(111GO) | 2020. 4. 26.
[1일1GO/0001] Go 프로그래밍 환경구성 오래전부터 프로그래밍에 관심을 가지는 분들에게 강좌 같은 걸 해볼까 하고 고민을 하긴 했습니다만. 유튜브나 블로그등에 좋은 강좌들은 꽤 많은지라 원론적인 부분 빼고 2~3년 전부터 매우 애정하고 모두의 프린터, 모두의 자막, 모두의 플러그 등을 비롯 최근에 만든 많은 프로그램들의 개발 언어인 Go라는 언어를 가지고 특정 프로그램을 만들기 위한것 보다는 함수 하나, 기능 하나들 위주로 "이러이러한 기능을 만들고 싶으면 요래 하면 됩니다!" 그냥 따라 하거나 복붙 하거나 하면 되는 그 과정에서 필요한 지식을 전달하고 가능하면 C/C++, 자바 등의 다른 언어에 대한 이야기도 풀어 갈 수 있는 영상을 작업해보려 합니다. 영상의 보조적 수단으로 블로그에 포스트도 작성해 올릴 예정입니다. 시작에 앞서 기본적으로 .. 1일1고(111GO) | 2020. 4. 24.
반응형