파이썬에서 GUI 만들기 tkinter 사용하여 그 1

15513 단어 Tkinter파이썬

개요



파이썬으로 만든 툴을 실행할 때, 스스로 만든 것이라면 커맨드 라인에서 호출하는 것도 문제는 없습니다만, 개발과 관련이 없는 쪽이 사용하는 툴의 경우 화면에서 조작할 수 있는 쪽이 편리함이 좋다. 파이썬으로 앱을 만들 수 없는지 여러가지 조사해 만든 내용을 정리해 보았습니다. 아직 제작 쓰레기가 달콤하기 때문에 서서히 조정해 나갈 예정입니다.

필요한 것


  • 파이썬 3.7.2
  • pandas
  • numpy

  • 공개 위치



    github에서 공개하고 있습니다.
    htps : // 기주 b. 이 m / s의 wp f14 / e tc rs / t / r / py tongui

    처리 내용



    이전에 만든 selenium 연습 사이트 작업을위한 스크립트 여기 참조 , 엑셀 파일 열 추가, 행 삭제 스크립트 여기 참조
  • 화면상에서 가변의 텍스트 영역(버튼의 표시명이나 라벨등도 포함한다)을 사용할 때는 이하와 같이 StringVar() 를 사용합니다.
  • 
        inputFolder=StringVar()
        outputFolder=StringVar()
    
    
  • 다음은 파일 대화 상자를 열고 선택한 파일 경로를 텍스트 상자에 저장합니다.
  •     def openFile(self):
            fTyp = [('','*.xlsx')]
            iDir = os.path.abspath(os.path.dirname(__file__))
            filename = filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)
            return filename
    
        def fileButton(self):
           filename= self.openFile()
           self.inputFileName.set(filename)
    
  • 다음은 실제 처리를 움직이는 곳입니다. 처리가 끝날 때까지 화면이 굳어 버리므로 thread를 사용하고 있습니다. 버튼에 정의하는 것은 doExecute 가 됩니다.
  • 
        def doExecute(self):
            # threading.Lock
            thread=threading.Thread(target=self.execute)
            thread.start()
    
        def execute(self):
    
            excelFile=pd.ExcelFile(self.inputFileName.get())
            reserveSheetTemp=excelFile.parse(sheet_name='予約シート',dtype='str',header=1)
            print(reserveSheetTemp.head())
            log=LoggerObj()
            driver=webdriver.Chrome('C:/webdrivers/chromedriver.exe')
            driver.get('http://example.selenium.jp/reserveApp/')
    
            reserveSheet=reserveSheetTemp.query('無効フラグ != "1"')
            testSideOrder=TestSiteOrder(driver,log,'test')
            # 勤務時間入力
            testSideOrder.inputOrder(reserveSheet)
    
            testSideOrder.createOkDialog('処理完了','登録処理完了')
    
    
  • 아래와 같이 tkinter.TK() 를 사용해 화면의 정의를 만들어 갑니다.
  • title에서 창 제목 설정
  • Frame에서 화면의 크기 등을 정의합니다.

  • root= tkinter.Tk()
    
        def main(self):
            root.title("Python GUI")
            content = ttk.Frame(root)
            frame = ttk.Frame(content,  relief="sunken", width=400, height=500)
    
  • 다음과 같이 grid를 사용하여 화면에 라벨, 버튼 등의 부품을 배치합니다. (일부 발췌)
  • 그리드를 사용하면 세로, 가로 위치에 배치할 위치를 조정할 수 있습니다.
  • 가변하는 항목은 textvariable 를 사용해 StringVar 로 선언한 것을 지정하면 항목의 변경을 반영시킬 수가 있습니다.
  • command 로 시작하는 함수를 설정합니다.
  • 마지막으로 mainloop()를 호출하여 화면을 계속 표시 할 수 있습니다.

  •         content.grid(column=0, row=0)
    
            title.grid(column=0, row=0, columnspan=4)
    
            fileLabel=ttk.Label(content,text="予約情報")
            resultFolderLabel=ttk.Label(content,text="フォルダ指定")
    
            fileInput=ttk.Entry(content,textvariable=self.inputFileName,width=70)
            resultFolderInput=ttk.Entry(content,textvariable=self.outputFolder,width=70)
    
            self.progressMsgBox=ttk.Label(content,textvariable=self.progressMsg,width=70)
    
            self.progressBar=ttk.Progressbar(content,orient=HORIZONTAL,length=140,mode='indeterminate')
            self.progressBar.configure(maximum=10,value=0)
    
            fileInputButton=ttk.Button(content, text=BUTTON_LABEL_REFERENCE,command=self.fileButton)
            resultDirectoryInputButton=ttk.Button(content, text=BUTTON_LABEL_REFERENCE,command=self.inputResultFolderButton)
    
            executeButton=ttk.Button(content,text='実行',command=self.doExecute)
            fileExecuteButton1=ttk.Button(content,text='ファイル操作 挿入実行',command=self.fileInsert)
            fileExecuteButton2=ttk.Button(content,text='ファイル操作 デリート実行',command=self.fileDelete)
            root.mainloop()
    

    시작하면 다음과 같은 화면이 표시됩니다.



    우선 이번에는 이 정도로
    계속 만들었습니다.

    좋은 웹페이지 즐겨찾기