GUI Programming - Part 2 ( GUI for Python - wxPython )

Slides:



Advertisements
Similar presentations
자기소개서 만들기. 2 4) 자기소개서 작성방법 [ 데이터 수집 ] - 지원하는 업무는 어떤 업무인가 ? - 그 일을 왜 하고 싶은가 ? - 그 업무는 나의 전공과 관련이 있는 업무인가 ? - 그 업무를 수행하기 위해 미리 알아야 할 사항은 무엇인가 ? - 필요한 직무능력을.
Advertisements

Python Essential 세미나 1 Socket Programming 발표자 : 임민상 ( 화 )
Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved. 제7강제7강.
Computer Graphics 윈도우 프로그래밍 김 창 헌김 창 헌. Computer Graphics 2 윈도우 시스템  윈도우  스크린 위에서 독립적으로 움직일 수 있는 사각형 영역  윈도우 시스템  유저와 어플리케이션간의 그래픽 스크린을 통한 인터페이스 를.
미디어 프로그래밍 II 소개.
시스템 개요 진화 과정 RIA & X-Internet Web Client/Server Main FRame
2013학년도 3-1 정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
MrDataBld 2.x 제품 소개 2007.
안 보여 줄끼가? 소프트웨어 프로젝트 1 – 제안서 발표 피바다 (A6)조 발표자 : 조기수.
Efl을 이용한 타이젠 네이티브 웨어러블 앱 만들기
001 이찬진 사장 "아이폰 부가사업으로 승부수"` 연합뉴스 구분 내용 비고 기사 요약
1월 19일 주일오전예배 핸드폰 전원을 꺼주시기 바랍니다.
NS–2 (Network Simulator)
- 계산기 GUI 구성하기 - 조원: 박강국 오정은 이귀식 김도윤 안영진.
GTK 프로그래밍 ( 1 ) SNSLAB 발표 : 문동규.
제1장 C#의 기초 1.1 .NET Framwork 1.2 .NET Environment 1.3 C# 소개.
System.Windows.Forms 윈도우 폼 SD50 – C# & .NET Platform.
GTK+ 프로그래밍 (2) SNSLAB 발표 : 문동규.
5과 하나님의 말씀인 성경.
동명대학교 게임공학과 강영민 게임프로그래밍 1 강의노트 01.
어서와 Java는 처음이지! 제1장 기초 사항.
홈페이지 자동 구축 솔루션 K2 Web WIZARD 2.6 관리자 메뉴얼
1장 유닉스 소개.
A n d r o i d Android 2010 년 5월 19일 작성자 : 백 선 재.
2017 은광교회 청년디모데 여름 수련회 ( ).
Web Programming 강의 소개
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
오목게임 W32 로봇시스템제어(하) GROUP 7 노성동, 하선웅, 김관준
어서와 Java는 처음이지! 제1장 기초 사항 IT응용시스템공학과 김형진 교수.
윤 홍 란 MFC 기초 윤 홍 란
System Call Linux Kernel 수업 3번째.
컴퓨터 개론 및 실습.
동호회 구축 제안서 인터넷전문가그룹 4biz.
안드로이드 개요 2005년 휴대폰 소프트웨어 개발사인 Android를 구글이 인수 2007년 11월 오픈소스로 공개
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
안녕하십니까? 저는 컴퓨터 응용과학부 98학번 이민호 입니다.
2017년 하계 경성 프로그래밍 교육 (5/5) 경성대학교 공과대학 소프트웨어 학과.
Development Environment of Embedded System : part 1
Visual C Feature Pack Furyheimdall.tistory.com.
운영체제와 Windows XP 초등 ICT 교육 방법론 2013년 1학기.
제3장 이클립스 사용하기.
Visual C++ Programming
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
이벤트(Event) 처리하기 윈도우 프로그램에서는 이벤트를 통하여 실행 중인 프로그램에게 사용자의 요구사항을 알린다.
MFC UI for TS Analyzer 서울시립대학교 컴퓨터통계학과 최 용 진.
Beginning Linux Programming
Operating System System Program OS의 목적 OS의 종류 Application Program과 구별
Visual Basic 기초 1 목표: 컴퓨터기반제어에 관련된 학습을 하기 전에 Visual Basic의 기초를 살펴본다.
Visual Studio 2010 프로젝트 생성하기 PC화면에서 Visual Studio 2010 아이콘을 더블클릭 하거나
두근두근 파이썬 수업 14장 프로젝트 II.
날짜: 팀명: TEAM-SIX 발표자: 이기영
정보컴퓨터공학부 컴퓨터 소프트웨어 설계 및 실험
객체 지향 프로그래밍.
U+ Biz 그룹웨어 Mobile Office User Guide.
김 정 석 Web Programming 김 정 석
Linux/UNIX Programming APUE (Thread Programming)
JAVA WINDOW PROGRAMMING
프로젝트 포트폴리오 요약 프로젝트 종류 프로젝트 이력 역할 주요 기술 : Windows System Application
제7강 PC정비사 1급(필기) Lee Hoon Copyright(c) 2008 LeeHoon All rights reserved.

두근두근 파이썬 수업 14장 프로젝트 II.
운영체제의 종류 장승빈.
농 협 하 나 로 마 트 - CTI 고객관리& 주문배송 솔루션 사용 설명서 ㈜ 대아솔루션 홈페이지 Hosting 유지보수.
안드로이드 앱 분석 팀 기반의 설계 프로젝트 박민재
Spring, 2019 School of CSE Pusan National University
운영체제 장수용.
C.
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
컴퓨터 프로그래밍 언어 Visual Basic 6.0 √ 원리를 알면 VB가 쉽다.
Presentation transcript:

GUI Programming - Part 2 ( GUI for Python - wxPython ) 2001. 5. 22(화) Python Essential 세미나 GUI Programming - Part 2 ( GUI for Python - wxPython ) 발표자 : 최용준

Python’s GUI Binding (1) Tkinter “TK interface” TK GUI toolkit / Python standard module Unix, Windows, Mac 등에서 사용 PyGTK Gtk+(Gimp Tool Kit) widget을 위한 Python binding Tkinter: 가장 고전적인 GUI 툴킷. 단순하다는 장점이 있지만, 느린 속도와 고전적인 스타일 위젯으로 현재는 잘 사용되지 않음 PyGTK: Qt와 대등한 또 다른 GUI 툴킷으로, GTK의 파이썬 바인딩. 이것 역시 아주 방대한 라이브러리와 쉬운 프로그래밍으로 인기있음. 레드햇 리눅스 설치 프로그램인 아나콘다에 사용된 GUI 툴킷

Python’s GUI Binding (2) Gnome-python GNOME의 Python binding PyQt Python의 Qt 확장모듈 PyKDE Python의 KDE 확장모듈 Etc… WPY(MFC, Tk), Pmw(Tkinter), FXPY(FOX GUI lib. Interface) PyQt: 최근에 많이 사용되고 있는 Qt라이브러리의 파이썬 바인딩. 방대한 라이브러리와 현대적인 감각의 위젯으로 많이 사용되고 있는 툴킷

wxPython Module wxWindows GUI lib.를 Python에서 사용하기 위한 Python 확장 모듈 C와 C++, SWIG(Simplified Wrapper and Interface Generator), Python으로 작성 wxPython: wxWindows의 파이썬 바인딩. 아주 강력하며 쉬운 프로그래밍 방식으로 전 세계적으로 아주 많은 인기를 끌고 있음.. 특히 초보자가 사용하기에 적절하며 프로그래밍하기에도 쉬움. MFC 라이브러리의 축소판이라고 해도 될 정도로 아주 정교하고 체계적인 라이브러리임. 인터페이스 생성기, SWIG: SWIG는 Tcl, 펄, 파이썬, Guile 등의 인터프리트 언어에서 C, C++, 오브젝티브 C로 만들어진 확장모듈을 손쉽게 사용할 수 있도록 도와주는 인터페이스 생성기이다.

wxWindows, native API wxWindows GTK+ Motif Windows API Mac Windows System OS Native API

Python Application Program wxPython, wxWindows Python Application Program wxPython Module wxWindows GTK+ Windows API Windows System OS

wxWindows C++로 작성된 Cross-platform GUI library MS-Windows(w)와 X-Window(x)에서 사용 가능하다는 뜻의 wx 현재 Windows, X-Window, Mac에서 사용가능

wxWindows 특징 (1) 최소한의 코드 수정으로 cross platform C++ 응용프로그램 작성 Native API에 대해 각각의 wxWindows버전이 존재, native GUI의 ‘look and feel’을 갖음 파일복사, 삭제, 소켓, 쓰레드등 운영체제간 공통적인 기능을 제공 스트링, 배열, 링크드리스트, 해시테이블등의 데이터 구조

wxWindows 특징 (2) Qt, BeOS, OS/2, Windows CE, QNX/Photon, FLT로의 포팅도 고려하고 있고 일부 개발중

wxPython 특징 Python과 wxWindows의 특징을 모두 가짐 현재는 Gtk+, Windows 버전만 지원 Python과 C++언어상의 특징 때문에 차이점 존재 Argument pointer로 결과값을 반환하는 경우 오버로딩된 함수를 사용하는 경우 차이점 Argument pointer로 결과값을 반환하는 경우 wxWindows Void wxWindows::GetClientSize(int* width, int* height) wxPython No arguments, return tuple(width, height) 오버로딩된 함수를 사용하는 경우 Void wxWindows::GetClientSize(int* width, int *height) wxSize wxWindows::GetClientSize(void) wxGetClientSizeTuple() – return tuple(width, height) wxGetClientSize() – return wxSize object

wxPython 예제1 (1) from wxPython.wx import * class MyApp(wxApp): def OnInit(self): frame = wxFrame(NULL, -1, "Hello from wxPython") frame.Show(true) self.SetTopWindow(frame) return true app = MyApp(0) app.MainLoop()

wxPython 예제1 (2)

wxPython 클래스 구조 Application Class Main Frame Class 화면에 보이지 않는 부분 OS로부터 이벤트를 받아 처리 무한루프(이벤트 드리븐 방식) Main Frame Class 화면에 보이는 부분 버튼, 컨크롤등의 배치 이미 정의된 객체(프레임, 상태바나 메뉴바등)를 변형시킥고자 할 때에는 클래스를 상속 받은 다음, 재정의를 하는 방식을 사용하면 된다.

wxPython 예제2 (1) from wxPython.wx import * ID_ABOUT = 101 ID_EXIT = 102 class MyFrame(wxFrame): def __init__(self, parent, ID, title): wxFrame.__init__(self, parent, ID, title, wxDefaultPosition, wxSize(200, 150)) self.CreateStatusBar() self.SetStatusText("This is the statusbar") menu = wxMenu() menu.Append(ID_ABOUT, "&About", "More information about this program") menu.AppendSeparator() menu.Append(ID_EXIT, "E&xit", "Terminate the program") menuBar = wxMenuBar() menuBar.Append(menu, "&File"); self.SetMenuBar(menuBar) class MyApp(wxApp): def OnInit(self): frame = MyFrame(NULL, -1, "Hello from wxPython") frame.Show(true) self.SetTopWindow(frame) return true app = MyApp(0) app.MainLoop()

wxPython 예제2 (2)

wxPython EVENT EVT_SIZE EVT_MOVE EVT_CLOSE EVT_PAINT EVT_CHAR EVT_IDLE 프로그램 창의 크기가 변했을 때 발생 EVT_MOVE 프로그램 창의 위치가 이동되었을 때 발생 EVT_CLOSE 메인 프레임이 닫혔을 때 발생 EVT_PAINT 프로그램의 일부분이 가려져, 다시 그려져야 할 필요가 있을 때 EVT_CHAR 키보드가 눌렸을 때 발생 EVT_IDLE 시스템이 어떠한 이벤트를 처리하고 않는 유휴기간일때 발생 EVT_LEFT_DOWN 마우스 왼쪽 버튼이 눌려졌을 때 발생 EVT_LEFT_UP 마우스 왼쪽 버튼을 눌렀다가 뗄 때 발생 EVT_LEFT_DCLICK 마우스 왼쪽 버튼을 더블 클릭 할 때 발생 EVT_MOTION 마우스를 움직일 때 발생 EVT_SCROLL 스크롤 바에서 스크롤을 하게 될 때 발생 EVT_BUTTON 버튼을 클릭했을 때 발생 EVT_MENU 메뉴 항목을 눌렀을 때 발생

wxPython 예제3 (1) from wxPython.wx import * ID_ABOUT = 101 ID_EXIT = 102 class MyFrame(wxFrame): def __init__(self, parent, ID, title): wxFrame.__init__(self, parent, ID, title, wxDefaultPosition, wxSize(200, 150)) self.CreateStatusBar() self.SetStatusText("This is the statusbar") menu = wxMenu() menu.Append(ID_ABOUT, "&About", "More information about this program") menu.AppendSeparator() menu.Append(ID_EXIT, "E&xit", "Terminate the program") menuBar = wxMenuBar() menuBar.Append(menu, "&File"); self.SetMenuBar(menuBar) EVT_MENU(self, ID_ABOUT, self.OnAbout) EVT_MENU(self, ID_EXIT, self.TimeToQuit) def OnAbout(self, event): dlg = wxMessageDialog(self, "This sample program shows off\n" "frames, menus, statusbars, and this\n" "message dialog.", "About Me", wxOK | wxICON_INFORMATION) dlg.ShowModal() dlg.Destroy() def TimeToQuit(self, event): self.Close(true) class MyApp(wxApp): def OnInit(self): frame = MyFrame(NULL, -1, "Hello from wxPython") frame.Show(true) self.SetTopWindow(frame) return true app = MyApp(0) app.MainLoop()

wxPython 예제3 (2)

wxPython Programming Style 객체(컨트롤)를 생성 객체에 해당하는 속성을 세팅 적절한 이벤트를 객체와 연결시킴 만들어진 객체가 화면에 보이도록 함 사용자의 입력(반응)을 기다림

작은 프로그램 예제 주소록(address.py) by 홍성두 계산기(calculator.py) by 최용준

참고 제2회 파이썬 오픈 세미나 제1회 파이썬 작은 세미나 www.wxpython.org www.wxwindows.org GUI for Python – wxPython (이한승) 해맑은 일기장 for Linux (홍성두) 제1회 파이썬 작은 세미나 wxPython 프로그래밍하기 (홍성두) www.wxpython.org www.wxwindows.org wxWindows User Guide