搜奇网-搜索天下奇闻,挖掘全球趣事!CTRL+D收藏本站    您好!欢迎来到www.souqi366.com

www.souqi366.com

首页 > 宇宙探秘/ 正文

python实现无边框进度条的实例代码

2021-01-09 14:41:25 宇宙探秘

    本文旨在用python实现无边框的进度条,并在其基础上加了图片,体现了某程序加载动画的效果

QQ截图20210109143309.png

    实现说明


    1.进度条的部分用到了tkinter中的画布组件2.图片无边框显示用到了PYQT5中的QMainWindow,QApplication(由于水平有限,只好用两个不同的库来实现)


    源代码


    importsys


    fromPyQt5.QtCoreimportQt


    fromPyQt5.QtWidgetsimportQMainWindow,QApplication


    importtime


    fromtkinterimport*


    classMainWIndow(QMainWindow):


    def__init__(self,parent=None):


    super(MainWIndow,self).__init__(parent)


    self.resize(500,667)


    self.setWindowTitle("私人医生copyright@20201.2.1")


    #设置无边框窗口样式


    self.setWindowFlags(Qt.FramelessWindowHint)


    #子窗口,窗口无按钮,但有标题,可注释掉观察效果


    self.setWindowFlags(Qt.SubWindow)


    self.setObjectName("MainWindow")


    self.setStyleSheet("#MainWindow{border-image:url(images/python.jpg);}")


    if__name__=="__main__":


    app=QApplication(sys.argv)


    win=MainWIndow()


    win.show()


    #更新进度条函数


    defchange_schedule(now_schedule,all_schedule):


    canvas.coords(fill_rec,(5,5,6+(now_schedule/all_schedule)*100,25))


    root.update()


    #进度显示


    x.set(str(round(now_schedule/all_schedule*100,2))+"%")


    ifround(now_schedule/all_schedule*100,2)==100.00:


    x.set("完成")


    #创建画布


    root=Tk()


    #画布位置控制,前两个参数为宽度和高度,后两个参数为xy坐标


    root.geometry("480x30+720+830")


    #创建画布


    frame=Frame(root).grid(row=0,column=0)


    #使用时将框架根据情况选择新的位置


    canvas=Canvas(frame,bg="white")


    canvas.grid(row=0,column=0)


    x=StringVar()


    #隐藏标题栏


    root.overrideredirect(True)


    #将边框像素设置为0,即取消边框


    canvas.configure(highlightthickness=0)


    #进度条以及完成程度


    #设置矩形,无填充即为边框


    out_rec=canvas.create_rectangle(5,5,480,25,outline="red",width=1)


    fill_rec=canvas.create_rectangle(5,5,5,25,outline="",width=0,fill="blue")


    Label(frame,textvariable=x).grid(row=0,column=1)


    foriinrange(480):


    time.sleep(0.01)


    change_schedule(i,99)


    #root.mainloop()


搜索
网站分类