python 은 PySimple GUI 를 사용 하여 진행 표시 줄 및 컨트롤 을 설정 합 니 다.
6694 단어 pythonPySimpleGUI진도 표
설치 하 다.
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)
기본 매개 변수
앞의 매개 변 수 는 각각 대표 한다.
진행 항목 제목,
진도 조 현재 진도,
진도 게이지 최대 진도,
진도 바 의 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')
아 날로 그 진도 가 한 걸음 한 걸음 채 워 집 니 다.
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'
)
이곳 의 휴면 시간 은 임 무 를 완수 하 는 시간 으로 쓸 수 있다.임 무 를 조금 도 완수 하지 못 하면 진도 가 증가한다.
하지만 실제로 실 행 될 때 는 작업 수행 시 진도 가 막 히 는 경우 가 많다.진도 바 를 응답 하지 않 은 상태 로 만 듭 니 다(첫 번 째 그림 참조).그래서 보통 시간 이 걸 리 는 임 무 를 다 중 스 레 드 로 수행 하고 완성 한 후에 진도 항목 의 업데이트 상 태 를 알 리 는 방법 을 강구 합 니 다.주(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()
이 곳 은 여전히 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 진도 바 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.