使用tkinter实现 loading 等待效果
生活随笔
收集整理的這篇文章主要介紹了
使用tkinter实现 loading 等待效果
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
具體代碼如下:
import tkinter as tk from tkinter import ttk import threading import timedef formatForm(form, width, heigth):"""設置居中顯示"""# 得到屏幕寬度win_width = form.winfo_screenwidth()# 得到屏幕高度win_higth = form.winfo_screenheight()# 計算偏移量width_adjust = (win_width - width) / 2higth_adjust = (win_higth - heigth) / 2form.geometry("%dx%d+%d+%d" % (width, heigth, width_adjust, higth_adjust))class LoadingBar(object):def __init__(self, width=200):# 存儲顯示窗體self.__dialog = None# 記錄顯示標識self.__showFlag = True# 設置滾動條的寬度self.__width = width# 設置窗體高度self.__heigth = 20def show(self, speed=10, sleep=0):"""顯示的時候支持重置滾動條速度和標識判斷等待時長"""# 防止重復創建多個if self.__dialog is not None:return# 線程內讀取標記的等待時長(單位秒)self.__sleep = sleep# 創建窗體self.__dialog = tk.Toplevel()# 去除邊框self.__dialog.overrideredirect(-1)# 設置置頂self.__dialog.wm_attributes("-topmost", True)formatForm(self.__dialog, self.__width, self.__heigth)# 實際的滾動條控件self.bar = ttk.Progressbar(self.__dialog, length=self.__width, mode="indeterminate",orient=tk.HORIZONTAL)self.bar.pack(expand=True)# 數值越小,滾動越快self.bar.start(speed)# 開啟新線程保持滾動條顯示t = threading.Thread(target=self.waitClose)t.setDaemon(True)t.start()def waitClose(self):# 控制在線程內等待回調銷毀窗體while self.__showFlag:time.sleep(self.__sleep)# 非空情況下銷毀if self.__dialog is not None:self.__dialog.destroy()# 重置必要參數self.__dialog = Noneself.__showFlag = Truedef close(self):# 設置顯示標識為不顯示self.__showFlag = Falseloading = LoadingBar()if __name__ == '__main__':root = tk.Tk()root.title('Loading滾動條演示')formatForm(root, 400, 300)# 展示滾動條,指定速度loading.show(speed=5)tk.Button(root, text='關閉滾動條', command=loading.close).pack(side=tk.TOP)tk.Button(root, text='開啟滾動條', command=loading.show).pack(side=tk.TOP)root.mainloop()運行界面截圖:
存在錯誤的話,歡迎留言指正,謝謝!?
總結
以上是生活随笔為你收集整理的使用tkinter实现 loading 等待效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos-creator使用记录5_发
- 下一篇: 实用的电脑快捷键技巧,赶紧收藏!