(wxPython) FilePickerCtrl – 파일 선택기 컨트롤 관련 이미지

(wxPython) FilePickerCtrl – 파일 선택기 컨트롤


FilePickerCtrl – 파일 선택기 컨트롤 관련 대표 이미지

개요

파일 선택기 컨트롤(wx.FilePickerCtrl)이름에서 알 수 있듯이 파일을 선택하는 컨트롤입니다.파일 선택 컨트롤 텍스트 컨트롤(wx.TextCtrl)수업 버튼(wx.Button)버튼을 클릭하면 파일 대화상자(wx.FileDialog)사용법은 매우 간단합니다. 파일 선택 컨트롤을 사용하여 패널에 GIF 애니메이션을 추가하는 방법을 알아보겠습니다.

wx.FilePicker 컨트롤

선언은 일반 다이얼로그(wx.Dialog)와 유사하며, 와일드카드와일드카드 구문을 추가하는 것은 어렵지 않습니다. 예를 살펴보겠습니다.

fpc = wx.FilePickerCtrl(parent, id=wx.ID_ANY, path="", message="", wildcard="", pos=wx.DefaultPosition,
                        size=wx.DefaultSize, style=wx.FLP_DEFAULT_STYLE, name=FilePickerCtrlNameStr)

파일 선택 컨트롤과 일반 파일 대화 상자의 차이점은 ShowModal() 함수가 없다는 것입니다. 대신 사용자가 파일을 선택하고 확인 버튼을 누르면 다음과 같은 이벤트가 발생합니다. 따라서 묶기만 하면 됩니다.

wx.EVT_FILEPICKER_CHANGED

예제에서 얻은 결과와 파일 대화 상자(wx.FileDialog)에서 얻은 결과를 비교해 봅시다. (링크: https://hexa-coding./26)

다음 예제에서는 움직이는 GIF 애니메이션 파일을 파일 선택 컨트롤로 창에 표시하는 기능을 구현합니다. 구글 검색을 해서 미리 적당한 애니메이션 파일을 준비하고 예를 들어보자.

import wx
from wx.adv import Animation, AnimationCtrl

class Example(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self,parent,id,'Example Window', size=(650,800))

        panel = wx.Panel(self)

        # 이미지 파일 타입에 따른 확장자명을 딕셔너리로 만든다
        types = ('GIF', 'Bitmap', 'JPEG', 'PNG', 'Photoshop', 'TIFF', 'RAW')
        exts = ('gif', 'bmp', 'jpeg', 'png', 'psd', 'tif', 'raw')
        pics = dict(zip(types,exts))

        # FilePickerCtrl의 와일드카드 String을 만든다
        wcard = ""
        for type, ext in pics.items():
            wcard += f"{type} files (*.{ext})|*.{ext}|"
        wcard = wcard(:-1)
        # 와일드카드는 OR 연산자인 "|"를 이용하여 여러 개를 동시에 사용할 수 있다. 아래 주석을 해제해보자.
        # print(wcard)

        # 파일선택컨트롤
        f_pick = wx.FilePickerCtrl(panel, id=-1, path="D:\icon/", message="파일을 선택하세요", size=(450,-1),
                                   wildcard=wcard, style=wx.FLP_DEFAULT_STYLE)

        # 파일선택컨트롤을 담을 스태틱박스
        sbox = wx.StaticBox(panel, -1, "파일선택:")
        sbox_sizer = wx.StaticBoxSizer(sbox, wx.VERTICAL)
        sbox_sizer.Add(f_pick, 0, wx.EXPAND, 10)


        def OnButtonClicked(f_pick, e):
            import os
            # 선택한 파일 경로
            path = f_pick.GetPath()

            # 확장자가 gif 이면 애니매이션을 띄운다.
            # gif 애니매이션 파일은 구글에 검색해서 아무거나 다운받아놓자.

            # 파일 확장자명이 .gif로 끝날 때 수행 
            if os.path.basename(path).endswith('.gif'):
                # 애니매이션 생성
                anim = Animation(path)
                # 애니매이션 컨트롤 생성
                ctrl = AnimationCtrl(panel, -1, anim)
                # 박스사이저에 애니매이션 컨트롤을 담는다.
                bsizer.Add(ctrl, 1, wx.ALL|wx.ALIGN_CENTER_HORIZONTAL, 10)
                # 애니매이션 동작
                ctrl.Play()

                # Layout()이 이 부분을 주석처리 하고 실행해보자
                # 주석일때와 그렇지 않을때 차이점이 무엇일까?
                bsizer.Layout()

        # 파일선택시 동작하는 wx.EVT_FILEPICKER_CHANGED 이벤트를 감지해 함수를 실행한다.
        self.Bind(wx.EVT_FILEPICKER_CHANGED, lambda e: OnButtonClicked(f_pick, e))

        bsizer = wx.BoxSizer(wx.VERTICAL)
        bsizer.Add(sbox_sizer, 0, wx.ALL|wx.EXPAND, 10)
        panel.SetSizer(bsizer)
        self.Center()



if __name__=="__main__":
    app = wx.App()
    frame=Example(parent=None, id=-1)
    frame.Show()
    app.MainLoop()

도움이 되셨다면 좋아요(), 더 궁금하신 사항은 메세지 남겨주세요 🙂

Similar Posts

  • 피츠공장견학 신청 방법과 팁

    피츠공장견학은 다양한 교육적 가치와 즐거움을 제공하는 흥미로운 경험입니다. 많은 분들이 공장 견학을 통해 생산 과정과 제품에 대한 이해를 깊이 있게 할 수 있습니다. 이번 포스트에서는 피츠공장견학 신청 방법과 주의할 점, 그리고 더욱 효과적으로 견학을 즐길 수 있는 팁에 대해 알아보겠습니다. 피츠공장견학 신청 방법 피츠공장견학에 참가하기 위해서는 사전 신청이 필수입니다. 여기서는 일반적인 신청 절차를 단계별로 설명합니다….

  • 삶의 모든 것은 글쓰기의 재료다

    드디어 나는 작가가 되었다어려운 경험이었습니다.행복한 시간보다 불행한 시간에 대해 쓰려면일반적으로 어려운시기에 만들어집니다.인생에서 가장 운이 좋지 않은 썰물 시기, “불행한” 시간나를 믿게 만들 시간이야, 하지만 내가 망가지는 순간놓친 그 불행한 시간이 나를 독자로 만들었고,고난과 고난이 나를 작가로 만들었다. – 고도원 윤인석의 “고도원 정신” – * 누구에게 물어보면인생을 책으로 쓸 수 있다고 합니다.그중에는 행복한 때보다 어려운 때가…

  • 알트코인브릿지 전송과 체인 전환 주의점

    알트코인브릿지란 알트코인을 다양한 블록체인 네트워크 간에 전송하는 데 사용되는 메커니즘을 의미합니다. 이러한 기술은 특히 사용자에게 여러 블록체인에서 자산을 더욱 유용하게 사용할 수 있는 기회를 제공합니다. 그러나 전송 과정에서 주의해야 할 몇 가지 포인트가 있습니다. 알트코인브릿지의 작동 원리 알트코인브릿지는 사용자가 특정 블록체인에서 보유한 자산을 다른 블록체인으로 옮길 수 있도록 돕습니다. 이 과정은 보통 세 가지 단계를…

  • 카카오뱅크 전세보증금 대출 & 만 19세 이상 34세 이하 청년이면 누구나 재직기간이 짧아도 가능!

    상세. 대출금리 전세보증금대출: 연 3.430%~4.397%(2023.03.10 기준) 청년전세보증금대출: 연 3.418%~3.886%(2023.03.10 기준) 대출금리 전세보증금대출: 연 3.430%~4.397%(2023.03.10 기준) 청년전세보증금대출: 연 3.418%~3.886%(2023.03.10 기준) ※대출 금리=기준 금리+가산 금리-우대 금리※가산 금리는 신용 점수별로 다른 대출 기간은 변화하지 않습니다.※기준 금리는 신규 취급액 COFIX6개월 만에 적용됩니다.(6개월마다 해당 시점의 신규 취급액 COFIX연동 금리를 적용하고 변동합니다.)하루 접수량 제한 원활한 서류 접수 및 처리 때문에 하루의…

  • 감자 심는 시기와 주의사항

    감자 파종시기 중부지방 남부지방 재배방법 병해충 주의사항 중국 남부의 감자 파종기: 2월 말에서 3월 중순 중부지방 감자 파종기 : 3월 중순~4월 말 봄 감자 수확 시기: 6월 중순~하순 감자를 심을 때 감자 재배 방법 토지 준비: 감자는 배수가 잘되는 토양에서 잘 자랍니다. 따라서 고온다습한 토양이나 물이 고이는 지역에서는 배수를 개선하거나 배수시설을 강화하여야 한다. 또한 흙을…

  • 드라마 재방송 무료 사이트

    드라마 재방송 무료 사이트 환자를 찾은 것 같습니다. 주민들이 가져다 줄 텐데 기다리지 않겠습니까? 함부로 옮기면 위험할 수 있습니다. 그럼 하지마. 빨리 가고 싶어요. 인간미 넘치는 커플로, 외출할 때면 누군가를 찾는 듯하다. 여러 사람이 위험하게 올라가 벽돌 더미를 옆으로 던지고 있었는데, 벽돌을 옮겨 놓은 듯 온통 더러워진 이청제가 다가와 말했다. 그렇습니까? 그것은 당신에게 좋습니다. 드라마…