python3.8+PySimpleGUI+進度條代碼大全


1.python3.8+PySimpleGUI+進度條大全

2.效果圖:

3.代碼:

#導出模塊
import PySimpleGUI as sg
import time
import inspect
from progress.bar import IncrementalBar

#-----------登錄界面,第1個窗口------------
def Denglu(): #登錄界面,第1個窗口
    layout = [
              [sg.Text('賬號:'),sg.Input(size=(20,1),key=('k1'))],
              [sg.Text('密碼:'),sg.Input(size=(20,1),key=('k2'),password_char='*')],
              [sg.Submit(),sg.Cancel()],
             ]

    window = sg.Window('登錄界面', layout)
    event, values = window.read()

    while True:
        if event == 'Cancel' or event == None: #成功
            window.close()
            break
        elif event =='Submit':  
            if values['k1']=='admin' and values['k2']=='123': 
            #這是指定賬號和密碼的,如果注冊后,再從注冊后的txt中調出,來判斷?
                   sg.Popup('登錄成功!')
                   window.close()
                   ZhuMain()
                   
                   break
            else:
               sg.Popup('請輸入正確的賬號和密碼,否則退出。')
               break
        
    window.close() 

#-------------定義進度條的代碼及函數-----------

#---定義函數:進度條1---
def Pb1():   #Pb=progress bar=進度條
    import time
    from progress.bar import IncrementalBar

    mylist = [1,2,3,4,5,6,7,8]
    bar = IncrementalBar('進度條1', max = len(mylist)) #len是測列表數據的個數,8個

    for item in mylist: 
        bar.next()
        time.sleep(0.1) #延遲時間,0.1~1,之間比較好

    bar.finish()

#---定義函數:進度條2---
def Pb2():
    from progress.bar import Bar
    import time

    bar = Bar('Loading', fill='~', suffix='%(percent)d%%') #fill里面可以填充自己喜歡的符號

    for i in range(100): #這個也需要適當調節
        bar.next() 
        time.sleep(0.1) #延遲時間,可調節,0.1~1之間最佳

    bar.finish()

#---定義函數:進度條3---
def Pb3():
    from progress.bar import Bar
    import time

    bar = Bar('進度條3', max=100) #max的值100,可調節

    for i in range(100): #這個也需要適當調節
        bar.next() 
        time.sleep(0.1) #延遲時間,可調節,0.1~1之間最佳

    bar.finish()

#---定義函數:進度條4---
def Pb4():
    from progress.bar import ChargingBar
    import time

    bar = ChargingBar('進度條4', max=100) #max的值100,可調節

    for i in range(100): #這個也需要適當調節
        bar.next() 
        time.sleep(0.1) #延遲時間,可調節,0.1~1之間最佳

    bar.finish()

#---定義函數:進度條5---
def Pb5():
    from progress.bar import FillingSquaresBar
    import time

    bar = FillingSquaresBar('進度條5', max=100) #max的值100,可調節

    for i in range(100): #這個也需要適當調節
        bar.next() 
        time.sleep(0.1) #延遲時間,可調節,0.1~1之間最佳

    bar.finish()

#---定義函數:進度條6---
def Pb6():
    from progress.bar import FillingCirclesBar
    import time

    bar = FillingCirclesBar('進度條6', max=100) #max的值100,可調節

    for i in range(100): #這個也需要適當調節
        bar.next() 
        time.sleep(0.1) #延遲時間,可調節,0.1~1之間最佳

    bar.finish()

def Pb7():
    from progress.bar import IncrementalBar
    import time

    bar = IncrementalBar('進度條7', max=100) #max的值100,可調節

    for i in range(100): #這個也需要適當調節
        bar.next() 
        time.sleep(0.1) #延遲時間,可調節,0.1~1之間最佳

    bar.finish()

def Pb8():
    from progress.bar import PixelBar
    import time

    bar = PixelBar('進度條8', max=100) #max的值100,可調節

    for i in range(100): #這個也需要適當調節
        bar.next() 
        time.sleep(0.1) #延遲時間,可調節,0.1~1之間最佳

    bar.finish()

def Pb9():
    from progress.bar import ShadyBar
    import time

    bar = ShadyBar('進度條9', max=100) #max的值100,可調節

    for i in range(100): #這個也需要適當調節
        bar.next() 
        time.sleep(0.1) #延遲時間,可調節,0.1~1之間最佳

    bar.finish()


def Pb10():
    from progress.spinner import Spinner
    #from progress.spinner import MoonSpinner
    #from progress.spinner import PieSpinner
    #from progress.spinner import PixelSpinner
    #from progress.spinner import LineSpinner

    import time

    bar = Spinner('進度條10', max=100) #max的值100,可調節
    #bar = MoonSpinner('進度條10', max=100)
    #bar = PieSpinner('進度條10', max=100)
    #bar = PixelSpinner('進度條10', max=100)
    #bar = LineSpinner('進度條10', max=100)

    for i in range(100): #這個也需要適當調節
        bar.next() 
        time.sleep(0.1) #延遲時間,可調節,0.1~1之間最佳

    bar.finish()

def Pb11():
    from alive_progress import alive_bar
    import time

    items = range(100)                 

    with alive_bar(len(items)) as bar:   
        for item in items:               
            bar()                      
            time.sleep(0.1)

def Pb12():
    import PySimpleGUI as sg
    import time

    mylist = [1,2,3,4,5,6,7,8]

    for i, item in enumerate(mylist):   
        sg.one_line_progress_meter('進度條12', i+1, len(mylist), '-key-')  
        time.sleep(1) #時間選擇1最好,因為8個有點短


def Pb13(): #經典,整合后出現在GUI界面上
    import PySimpleGUI as sg
    import time

    mylist = [1,2,3,4,5,6,7,8]
    progressbar = [ [sg.ProgressBar(len(mylist), orientation='h', size=(51, 10), key='progressbar')]]
    outputwin = [ [sg.Output(size=(78,20))]]
    layout = [ [sg.Frame('Progress',layout= progressbar)], [sg.Frame('Output', layout = outputwin)], [sg.Submit('Start'),sg.Cancel()]]

    window = sg.Window('Custom Progress Meter', layout)

    progress_bar = window['progressbar'] 

    while True:   
        event, values = window.read(timeout=10)   
        if event == 'Cancel' or event is None:     
            break 
        elif event=='Start':  
            for i,item in enumerate(mylist):    
                print(item)    
                time.sleep(1)    
                progress_bar.UpdateBar(i+1)

    window.close()

# -------------------------------- GUI Starts Here -------------------------------#
# fig = your figure you want to display.  Assumption is that 'fig' holds the      #
#       information to display.                                                   #
# --------------------------------------------------------------------------------#
#主窗口界面設計
def ZhuMain():
    fig_dict = {'進度條1':Pb1,'進度條2':Pb2,'進度條3':Pb3,'進度條4':Pb4,'進度條5':Pb5,
               '進度條6':Pb6,'進度條7':Pb7,'進度條8':Pb8,'進度條9':Pb9,'進度條10':Pb10,
               '進度條11':Pb11,'進度條12':Pb12,'進度條13':Pb13}

    sg.theme('LightGreen') #主題背景設計,默認銀河灰

# define the form layout
    listbox_values = list(fig_dict)
    
    col_listbox = [
               [sg.Listbox(values=listbox_values, enable_events=True, size=(28, len(listbox_values)), key='-LISTBOX-')],
               [sg.Text('' * 15)], 
               [sg.Exit(size=(5, 2))]
              ]
    
#布局
    layout = [
          [sg.Text('最全進度條及代碼整理', font=('current 10'))],
          [sg.Col(col_listbox, pad=(5, (3, 330))), 
           sg.MLine(size=(50, 30), pad=(5, (3, 90)), key='-MULTILINE-')] ,#第2行有3個布局
          
         ]

# create the form and show it without the plot
    window = sg.Window('Python3下的最全的進度條整理', layout, grab_anywhere=False, finalize=True)

# The GUI Event Loop
    while True:
        event, values = window.read()
                # helps greatly when debugging
        if event in (None, 'Exit'):     # if user closed window or clicked Exit button
            break
         
        choice = values['-LISTBOX-'][0]   # get first listbox item chosen (returned as a list)
        func = fig_dict[choice]   # get function to call from the dictionary
        window['-MULTILINE-'].update(inspect.getsource(func))  # show source code to function in multiline
            
    window.close()

if __name__ == '__main__':
    Denglu()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM