使用tkinter實現 loading 等待效果

2021-09-27 10:43:05 字數 2331 閱讀 8486

具體**如下:

import tkinter as tk

from tkinter import ttk

import threading

import time

def formatform(form, width, heigth):

"""設定居中顯示"""

# 得到螢幕寬度

win_width = form.winfo_screenwidth()

# 得到螢幕高度

win_higth = form.winfo_screenheight()

# 計算偏移量

width_adjust = (win_width - width) / 2

higth_adjust = (win_higth - heigth) / 2

form.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 = 20

def 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 = none

self.__showflag = true

def close(self):

# 設定顯示標識為不顯示

self.__showflag = false

loading = 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實現電子時鐘

一 import tkinter import threading import datetime import time tkinter.tk overrideredirect true 不顯示標題欄 attributes alpha 0.9 半透明 attributes topmost 1 總是...

用tkinter實現BMI計算

import tkinter import tkinter.messagebox root tkinter.tk root.title bmi計算器 root.geometry 400x400 bmi tkinter.strin ar label tkinter.label root,text bm...

python之tkinter 實現簡易計算器

from tkinter import root tk root.maxsize 300,400 class createframe def init self,frame,width,height self.frame frame self.width width self.height heig...