电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python使用PySimpleGUI設置進度條及控件使用

瀏覽:7日期:2022-06-17 09:22:39

PySimpleGUI 使用起來感覺比tkinter要方便,當然我也沒怎么用過這兩者。只是學習模擬一下任務進度完成情況。

安裝

pip install PySimpleGUI

一、簡單進度條使用

PySimpleGUI有一個一條命令即可展示進度條的控件。one_line_progress_meter

import timeimport PySimpleGUI as sgif __name__ == ’__main__’: sg.one_line_progress_meter(’進度條標題’, 10, 100, ’key1’, ’內容’) # sg.one_line_progress_meter() time.sleep(10)

python使用PySimpleGUI設置進度條及控件使用

基本參數前面的參數分別代表進度條標題,進度條當前進度,進度條最大進度,進度條的 key, (key相同代表是同一個進度條)進度條傳入參數(可以是多個非關鍵字參數)。

sg.one_line_progress_meter(’進度條標題’, 10, 100, ’key1’, ’內容1’)

其它常用參數orientation由于參數*args 的存在,調用時如果希望傳入自定義參數,那么前面的基本參數需要使用非關鍵字形式傳入。當然也可以不傳入自定義參數。orientation 表示 進度條是橫向的或是縱向的。h橫向 v縱向(默認)

sg.one_line_progress_meter(title=’進度條標題2’, current_value=20, max_value=100, key=’key2’, orientation=’h’)

python使用PySimpleGUI設置進度條及控件使用

模擬進度條一步步填滿

import timeimport PySimpleGUI as sgif __name__ == ’__main__’: for i in range(1000):time.sleep(0.02) # 模擬0.02s 完成了千分之一的任務sg.one_line_progress_meter( ’進度條’, i+1, 1000, ’key’, ’測試使用進度條’, orientation=’h’)

python使用PySimpleGUI設置進度條及控件使用

此處休眠時間可以當做完成任務的時間。沒完成一點任務進度條就會增加。

但實際上真正運行時有很多耗時任務執行時會阻塞進度條。使進度條陷入未響應狀態(如第一個圖片)。所以一般會把耗時任務使用多線程執行,執行完成后想辦法通知進度條更新狀態。注(PySimpleGUI組件需要運行在主線程,參見源文檔說明)

one_line_progress_meter雖然方便,但樣式無法控制,其上也有很多不關心的顯示無法去除。。。

附。PySimpleGUI的彈窗使用。

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)二、進度條控件使用

普通方法展示進度條控件。需要大概知曉布局和窗口的關系。

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

python使用PySimpleGUI設置進度條及控件使用

此處依然是使用的for循環將進度條填滿。下面使用線程模擬任務進度完成。

三、模擬任務完成度 進度條

使用線程模擬任務進度完成。當然,沒有現實的任務,所以還是使用for循環加休眠組成。。。當然,與原來還是有區別的。因為任務在線程內完成,完成后需要通知主線程進度條更新。

import randomimport timefrom queue import Emptyimport PySimpleGUI as sgimport threadingimport 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:# 點擊取消按鈕或者返回事件為 Nonebreak # 10ms 無操作算超時event會等于 __TIMEOUT__ # 其實不用判斷 try:# get是等待讀取,直到讀取到數據# get_nowait 不等待,讀取不到數據 就報異常progress_value = q.get_nowait() except Empty: # 沒有讀取到數據的話,繼續window.readcontinue else: # 讀取到數據progress_bar.UpdateBar(progress_value)if progress_value == 100: # 進度滿跳出循環 breakwindow.close()

python使用PySimpleGUI設置進度條及控件使用

以上就是python使用PySimpleGUI設置進度條的詳細內容,更多關于python PySimpleGUI進度條的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 细石混凝土泵_厂家_价格-烟台九达机械有限公司 | 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 信阳网站建设专家-信阳时代网联-【信阳网站建设百度推广优质服务提供商】信阳网站建设|信阳网络公司|信阳网络营销推广 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 顶呱呱交易平台-行业领先的公司资产交易服务平台 | LNG鹤管_内浮盘价格,上装鹤管,装车撬厂家-连云港赛威特机械 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | 北京四合院出租,北京四合院出售,北京平房买卖 - 顺益兴四合院 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 苏州工作服定做-工作服定制-工作服厂家网站-尺品服饰科技(苏州)有限公司 | 武汉EPS线条_EPS装饰线条_EPS构件_湖北博欧EPS线条厂家 | 工控机-工业平板电脑-研华工控机-研越无风扇嵌入式box工控机 | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 小型手持气象站-空气负氧离子监测站-多要素微气象传感器-山东天合环境科技有限公司 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 南京泽朗生物科技有限公司 | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 厌氧工作站-通用型厌氧工作站-上海胜秋科学仪器有限公司 | 双相钢_双相不锈钢_双相钢圆钢棒_双相不锈钢报价「海新双相钢」 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 焊管生产线_焊管机组_轧辊模具_焊管设备_焊管设备厂家_石家庄翔昱机械 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 有机肥设备生产制造厂家,BB掺混肥搅拌机、复合肥设备生产线,有机肥料全部加工设备多少钱,对辊挤压造粒机,有机肥造粒设备 -- 郑州程翔重工机械有限公司 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 杭州厂房降温,车间降温设备,车间通风降温,厂房降温方案,杭州嘉友实业爽风品牌 | 物联网卡_物联网卡购买平台_移动物联网卡办理_移动联通电信流量卡通信模组采购平台? | 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 气体检测仪-氢气检测仪-可燃气体传感器-恶臭电子鼻-深国安电子 | 国产频谱分析仪-国产网络分析仪-上海坚融实业有限公司 |