python 은 PySimple GUI 를 사용 하여 진행 표시 줄 및 컨트롤 을 설정 합 니 다.

PySimple GUI 는 tkinter 보다 사용 하기에 편리 하 다.물론 나 도 이 두 가 지 를 별로 사용 해 본 적 이 없다.그냥 미 션 진행 상황 모 의 하 는 거 야.
설치 하 다.
pip install PySimpleGUI
1.간단 한 진도 항목 사용
PySimple GUI 는 진행 표시 줄 의 컨트롤 을 보 여 주 는 명령 이 있 습 니 다.one_line_progress_meter

import time
import PySimpleGUI as sg


if __name__ == '__main__':
    sg.one_line_progress_meter('     ',
                               10,
                               100,
                               'key1',
                               '  ')
    # sg.one_line_progress_meter()
    time.sleep(10)
进度条1
기본 매개 변수
앞의 매개 변 수 는 각각 대표 한다.
진행 항목 제목,
진도 조 현재 진도,
진도 게이지 최대 진도,
진도 바 의 key,(key 같은 대 표 는 같은 진도 바)
진도 바 입력 매개 변수(여러 개의 비 키워드 매개 변수 일 수 있 습 니 다).

sg.one_line_progress_meter('     ',
                           10,
                           100,
                           'key1',
                           '  1')
기타 상용 매개 변수 방향
매개 변수*args 가 존재 하기 때문에 호출 할 때 사용자 정의 매개 변 수 를 입력 하려 면 앞의 기본 매개 변 수 는 비 키워드 형식 으로 입력 해 야 합 니 다.물론 사용자 정의 인자 가 들 어 오지 않 아 도 됩 니 다.
orientation 은 진도 가 가로 또는 세로 임 을 나타 낸다.
h 가로 v 세로(기본 값)

 sg.one_line_progress_meter(title='     2',
                               current_value=20,
                               max_value=100,
                               key='key2',
                               orientation='h')
进度条2
아 날로 그 진도 가 한 걸음 한 걸음 채 워 집 니 다.

import time
import PySimpleGUI as sg


if __name__ == '__main__':
    for i in range(1000):
        time.sleep(0.02)    #   0.02s           
        sg.one_line_progress_meter(
            '   ',
            i+1,
            1000,
            'key',
            '       ',
            orientation='h'
        )
进度条3
이곳 의 휴면 시간 은 임 무 를 완수 하 는 시간 으로 쓸 수 있다.임 무 를 조금 도 완수 하지 못 하면 진도 가 증가한다.
하지만 실제로 실 행 될 때 는 작업 수행 시 진도 가 막 히 는 경우 가 많다.진도 바 를 응답 하지 않 은 상태 로 만 듭 니 다(첫 번 째 그림 참조).그래서 보통 시간 이 걸 리 는 임 무 를 다 중 스 레 드 로 수행 하고 완성 한 후에 진도 항목 의 업데이트 상 태 를 알 리 는 방법 을 강구 합 니 다.주(PySimple GUI 구성 요 소 는 주 스 레 드 에서 실행 되 어야 합 니 다.원본 문서 설명 참조)
one_line_progress_meter 는 편리 하지만 스타일 을 제어 할 수 없고 관심 이 없 는 디 스 플레이 도 제거 할 수 없습니다.
붙이다PySimple GUI 의 팝 업 창 을 사용 합 니 다.

sg.popup('  !')
sg.popup_ok('    ')
sg.popup_yes_no(' Yes No     ')
sg.popup_cancel(' cancel     ')
sg.popup_ok_cancel(' OK cancel     ')
sg.popup_error('   error     ')
sg.popup_auto_close('          ')
sg.popup_auto_close('10         ', auto_close_duration=10)
2.진도 바 컨트롤 사용
일반적인 방법 으로 진도 바 컨트롤 을 보 여 줍 니 다.레이아웃 과 창의 관 계 를 대충 알 아야 합 니 다.

import PySimpleGUI as sg

#   ,            。
#              ,              ,    
#                 Text   ProgressBar    Cancel      
# Text Progress         , size 。      
layout = [[sg.Text('      ')],
          [sg.ProgressBar(1000, orientation='h', size=(20, 20), key='progressbar')],
          [sg.Cancel()]]

# window                          。
window = sg.Window('       ', layout)

#   key       
progress_bar = window['progressbar']

# window read         ,
#   timeout                       。
#  timeout    None      ,timeout                   。
#                。
for i in range(1000):	#   
    event, values = window.read(timeout=10)
    if event == 'Cancel' or event is None:
        break
    progress_bar.UpdateBar(i + 1)

window.close()
进度条4
이 곳 은 여전히 for 순환 을 사용 하여 진 도 를 채 웁 니 다.다음은 스 레 드 를 사용 하여 작업 진 도 를 모 의 하여 완성 합 니 다.
3.시 뮬 레이 션 임무 완성 도 진도 항목
스 레 드 시 뮬 레이 션 작업 진행 완료.물론 현실 적 인 임무 가 없 기 때문에 for 순환 과 휴면 으로 구성 되 어 있 습 니 다.물론 원래 와 는 다르다.작업 이 스 레 드 에서 완료 되 었 기 때문에 완료 후 메 인 스 레 드 진도 항목 의 업 데 이 트 를 알려 야 합 니 다.

import random
import time
from queue import Empty

import PySimpleGUI as sg
import threading
import queue

#   ,            。
#              ,              ,    
#                 Text   ProgressBar    Cancel      
layout = [[sg.Text('      ')],
          [sg.ProgressBar(100, orientation='h', size=(50, 20), key='progressbar')],
          [sg.Cancel()]]

# window                          。
window = sg.Window('       ', layout)

#   key       
progress_bar = window['progressbar']

#        
q = queue.Queue()


def task_1():
    global q
    for i in range(100):
        #      window.read      100ms                
        time.sleep(random.random() + 0.1)
        q.put(i+1)    #              

#                ,        ,        
worker_task = threading.Thread(target=task_1)
worker_task.setDaemon(True)
worker_task.start()

while True:     #             ,    100
    # event        
    #    Cancel     event=Cancel
    event, values = window.read(timeout=100)
    if event == 'Cancel' or event is None:
        #               None
        break

    # 10ms       event    __TIMEOUT__
    #       
    try:
        # get     ,       
        #  get_nowait    ,           
        progress_value = q.get_nowait()
    except Empty:   #          ,  window.read
        continue
    else:   #      
        progress_bar.UpdateBar(progress_value)
        if progress_value == 100:   #        
            break

window.close()
任务完成进度
이상 은 python 이 PySimple GUI 를 사용 하여 진도 바 를 설정 하 는 상세 한 내용 입 니 다.python PySimple GUI 진도 바 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기