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()