본문 바로가기

반응형

wxPython

파이썬 GUI, 파일컨트롤 wx.FileCtrl 개요 파일컨트롤(wx.FileCtrl)은 스태틱텍스트(wx.StaticText), 리스트컨트롤(wx.ListCtrl), 텍스트컨트롤(wx.TextCtrl), 그리고 콤보상자(wx.ComboBox)의 조합으로 이루어진 위젯이다. 기본적으로 폴더를 자유롭게 왔다갔다 할 수 있고, 파일을 선택할 수 있다. 예제에서는 파일컨트롤을 이용하여 그림파일을 열고, 또 회전도 시킬 수 있는 팝업메뉴를 구성하였다. wx.FileCtrl 파일컨트롤은 아래와 같이 선언한다. fc = wx.FileCtrl(parent, id=ID_ANY, defaultDirectory="", defaultFilename="", wildCard="All Files(*.*)|*.*", style=wx.FC_DEFAULT_STYLE, pos=wx... 더보기
파이썬 GUI, 팝업메뉴 PopupMenu 개요 메뉴(wx.Menu) 클래스를 이용하여 팝업메뉴를 만들어보자. 메뉴클래스를 상속받아 팝업메뉴에 속하는 하위 메뉴아이템(wx.MenuItem)들을 만들어주고, 마우스 우클릭시 메뉴가 열리도록 이벤트를 주면 된다. 간단한 구성이므로 예제를 통해 알아보자. 예제 예제는 패널이나 스태틱텍스트에 마우스 우클릭을 하면 팝업메뉴를 열고, 메뉴 아이템을 클릭하면 어떤 아이템이 클릭되었는지 메인패널의 스태틱 텍스트를 통해 알려준다. 팝업메뉴는 wx.Menu를 상속해서 별도의 클래스로 만들고, 이를 객체화 하여 마우스 우클릭시 뜨도록 바인딩을 해 주었다. import wx class Example(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self,p.. 더보기
파이썬 GUI, 파이비지인포 PyBusyInfo 개요 PyBusyInfo는 계산이 진행중일 때 유저에게 알림을 보내는 용도로 사용하는 위젯이다. 사실 동일한 기능을 wx.Dialog나 다른 위젯으로 해도 무방하나, 계산이 끝나면 위젯을 바로 사라지게 하면서 코드가 매우 간결하여 사용이 편리하기 때문에 적극 추천한다. PyBusyInfo 선언은 다음과 같이 한 줄이면 된다. (엄청 간편하지 않은가?!) PyBusyInfo는 시간이 오래 걸리지 않는 짧은 작업의 진행을 알리는 데 사용할 수 있고, 너무 긴 작업은 PyProgress(wx.lib.agw.pyprogress.PyProgress)나 게이지(wx.Gauge)를 이용하기 바란다. pbi = PyBusyInfo("메세지", parent=None, title="제목", icon=bmp) 곧바로 예제를.. 더보기
파이썬 GUI, 풍선 팁 BalloonTip 개요 풍선 팁(wx.lib.agw.balloontip.BalloonTip)은 위젯에 간단한 설명을 덧붙일때 사용한다. 사용법은 크게 어렵지 않으니 예제로 연습해보자. wx.lib.agw.balloontip.BalloonTip 풍선 팁 선언은 아래와 같이 먼저 관련 라이브러리를 임포트 한 후에 수행한다. 사실 BalloonTip을 바로 임포트 해도 무관하나, 아래와 같이 별표(*)로 임포트 하는 이유는 나중에 shape flag를 컨트롤 해주는 변수(wx.lib.agw.balloontip.BT_RECTANGLE) 등을 추가로 임포트하는 헛수고를 덜기 위함이다. from wx.lib.agw.balloontip import * 라이브러리가 임포트 되면, 아래와 같이 BalloonTip 클래스의 인스턴스를 만들.. 더보기
파이썬 GUI, 노트북, 탭 창 wx.Notebook 개요 wxPython에서 여러 개의 윈도우를 관련 탭으로 묶어 표시하는 컨트롤을 노트북(wx.Notebook)이라고 한다. 노트북은 서로 다른 기능적인 부분을 탭으로 각각 묶어 표시하기 때문에 UI가 간결하고 깔끔해지는 장점이 있고, 코드상 관리가 쉽다. 본 글에 포함된 예제에서는 GUI 하단에 노트북을 넣어 총 세 개의 선택컨트롤(wx.~PickerCtrl)들을 보다 쉽게 관리하는 모습을 보여준다. wx.Notebook 노트북 클래스(wx.Notebook)는 여러 개의 탭으로 이루어진 노트북 페이지를 모두 관리한다. 노트북 안에 속한 각각의 탭들을 노트북 페이지 라고 부른다. 페이지들은 패널(wx.Panel)을 상속해서 만든 클래스이다. 그리고 노트북은 페이지를 포함하므로, 노트북과 페이지의 관계는 메.. 더보기
파이썬 GUI, 파일선택컨트롤 wx.FilePickerCtrl 개요 파일선택컨트롤(wx.FilePickerCtrl)은 이름 그대로 파일 선택을 위한 컨트롤이다. 파일선택컨트롤은 텍스트컨트롤(wx.TextCtrl)과 버튼(wx.Button)으로 구성되어 있고, 버튼을 클릭하면 파일다이얼로그(wx.FileDialog)가 열린다. 사용법이 매우 간단하니 여기서는 파일선택컨트롤로 패널에 GIF Animation을 추가하는 법을 알아보자. wx.FilePickerControl 선언은 일반 대화상자(wx.Dialog)의 선언과 비슷하고, 파일 선택을 위한 와일드카드(wildcard)가 추가된다. 와일드카드 문법에 대해서는 어렵지 않으므로 예제를 참조하자. fpc = wx.FilePickerCtrl(parent, id=wx.ID_ANY, path="", message="", w.. 더보기
파이썬 GUI, 스태틱박스 사이저 wx.StaticBoxSizer 개요 스태틱박스사이저(wx.StaticBoxSizer)는 본래 wxPython의 기본 컨테이너인 박스사이저(wx.BoxSizer)를 기반으로 만들어졌다. 단순히 박스사이저의 둘레에 경계선을 그리고 레이블을 추가한 위젯인데, 서로 같은 기능을 하는 위젯들끼리 하나로 묶어 보여줄 수 있어서 활용도가 높다. 예제는 스태틱박스사이저를 활용하여 텍스트파일을 여는 위젯을 구현하였다. wx.StaticBoxSizer 스태틱박스사이저의 선언은 아래와 같이 세 줄이 필요하다. 첫째로 레이블(제목)이 있는 스태틱박스(wx.StaticBox)를 선언해야 하고, 둘째로 스태틱박스를 부모로 갖는 스태틱박스사이저(wx.StaticBoxSizer)를 선언한다. 그리고 마지막으로 스태틱박스사이저에 들어갈 위젯들을 .Add() 메소드.. 더보기
파이썬 GUI, 플렉시 그리드 사이저 wx.FlexiGridSizer 개요 FlexiGridSizer(wx.FlexGridSizer)는 아이템 배치 측면에서 바둑판 배치를 지향하는 그리드 사이저(wx.GridSizer)와 기본적으로 동일하다. 그러나 이 둘의 차이점은 아이템 사이즈에 있다. GridSizer는 모든 행과 열의 높이, 길이가 전부 동일하다. 반면 FlexiGridSizer는 같은 행에 속한 아이템들의 높이가 같고, 같은 열에 속한 아이템들의 폭이 서로 같지만 서로 다른 열에 속한 아이템들의 폭은 다르게 설정할 수 있고, 동시에 서로 다른 행에 속한 아이템들의 높이도 서로 다를 수 있다. wx.FlexGridSizer 이름은 Flexi 로 시작하여 "i" 가 있는 반면, 클래스 이름은 FlexGridSizer로 x뒤에 i가 없다. 선언은 아래와 같이 매우 쉽다.. 더보기

반응형