반응형
개요
PyBusyInfo는 계산이 진행중일 때 유저에게 알림을 보내는 용도로 사용하는 위젯이다. 사실 동일한 기능을 wx.Dialog나 다른 위젯으로 해도 무방하나, 계산이 끝나면 위젯을 바로 사라지게 하면서 코드가 매우 간결하여 사용이 편리하기 때문에 적극 추천한다.
PyBusyInfo
선언은 다음과 같이 한 줄이면 된다. (엄청 간편하지 않은가?!) PyBusyInfo는 시간이 오래 걸리지 않는 짧은 작업의 진행을 알리는 데 사용할 수 있고, 너무 긴 작업은 PyProgress(wx.lib.agw.pyprogress.PyProgress)나 게이지(wx.Gauge)를 이용하기 바란다.
pbi = PyBusyInfo("메세지", parent=None, title="제목", icon=bmp)
곧바로 예제를 통해 확인해보자.
예제
예제의 아이콘 파일은 https://www.flaticon.com/ 에서 아무거나 다운받아 사용하면 된다. 1부터 10억까지 덧셈을 하고, CPU에 따라 몇 초 정도 걸리는 계산을 진행하고 나면 위젯이 자동으로 사라진다.
반응형
import wx
from wx.lib.agw.pybusyinfo import *
class Example(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self,parent,id,'Example Window', size=(400,250))
panel = wx.Panel(self,-1)
# 이미지 객체 할당 : 아이콘 용도
img = wx.Image("d:/icon/information.png", type=wx.BITMAP_TYPE_PNG)
img = img.Scale(15, 15, wx.IMAGE_QUALITY_HIGH)
# 비트맵 변환
bmp = wx.Bitmap(img)
# PyBusyInfo 선언
pbi = PyBusyInfo("1 부터 100000000까지 덧셈중...\n계산이 끝나면 곧바로 사라집니다...",
parent=None, title="작업이 진행중이에요:)", icon=bmp)
# ~~~~~~~~작업코드 시작~~~~~~~~
sum = 0
for i in range(100000000):
sum += i
# ~~~~~~~~작업코드 끝~~~~~~~~
# 계산완료 텍스트
st = wx.StaticText(panel, -1, "계산완료")
# 폰트설정
font = wx.Font(30, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
st.SetFont(font)
# 박스사이저
bsizer = wx.BoxSizer(wx.VERTICAL)
bsizer.Add(st, 0, wx.ALL|wx.ALIGN_CENTER, 50)
panel.SetSizer(bsizer)
self.Center()
if __name__=="__main__":
app = wx.App()
frame=Example(parent=None, id=-1)
frame.Show()
app.MainLoop()
도움되셨다면 하트(♥) 부탁드리고, 더 궁금한 사항은 댓글로 남겨주세요 :)
반응형
'wxPython' 카테고리의 다른 글
파이썬 GUI, 파일컨트롤 wx.FileCtrl (0) | 2023.03.26 |
---|---|
파이썬 GUI, 팝업메뉴 PopupMenu (0) | 2023.03.24 |
파이썬 GUI, 풍선 팁 BalloonTip (0) | 2023.03.21 |
파이썬 GUI, 노트북, 탭 창 wx.Notebook (0) | 2023.03.19 |
파이썬 GUI, 파일선택컨트롤 wx.FilePickerCtrl (0) | 2023.03.18 |