庄彦涛_项目进度管理器18

目录

视频展示

序言

呈现结果

Python文件

附件


视频展示

序言

历经四个月总共18个版本的更迭,自己终于推出了这个项目进度管理器,方便自己的学习和工作的项目进度管理,大家喜欢的话可以玩一玩。

呈现结果

Python文件

from tkinter import*
from PIL.ImageTk import PhotoImage
import pandas_alive as pda
import pandas as pd
from matplotlib import pyplot as plt
import win32api, win32con, win32gui
import numpy as np
import imageio
from PIL import Image, ImageTk, ImageGrab
import tkinter.simpledialog
import cv2 
import os
import sys
import tkinter as tkinter
import gobject
import gst
import time
import tkinter as tk                    # 导入tkinter库,并重命名为tk
import ctypes

win=Tk()

win.title("ZYT_项目进度管理器18")
win.geometry("600x620")
win.resizable(width=False, height=False) #锁窗口

frame0=LabelFrame(relief=GROOVE,text='-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------')
frame0.pack(anchor=NW,fill=X)

frame1=LabelFrame(relief=GROOVE)
frame1.pack(anchor=NW,fill=X)

#创建标签
aa1 = tkinter.Label(frame0,text='  2、请输入项目数量:')
aa1.grid(sticky = W,row=0,column=2)
aa1.config(font=('隶书',12))


score=IntVar()      #类型标注
Quantity=Spinbox(frame0,textvariable=score,from_=1,to=8,increment=1,wrap=True,width=3,font=('隶书',12))
Quantity.grid(sticky = W,row=0,column=3)



frame2=LabelFrame(relief=SUNKEN)
frame2.pack(anchor=NW,fill=X)

frame3=LabelFrame(relief=GROOVE,text='进度情况',font=('隶书',12))
frame3.pack(anchor=NW,fill=X)

frame4=LabelFrame(relief=SUNKEN)
frame4.pack(anchor=NW,fill=X)

NAME = tkinter.Label(frame0,text='  1、设置标题:')
NAME.grid(sticky = W,row=0,column=0)
NAME.config(font=('隶书',12))

BiaoTi = tkinter.StringVar()
BiaoTi.set('')
#创建文本框,同时设置关联的变量
BiaoTi1 = tkinter.Entry(frame0,textvariable=BiaoTi,font=('隶书',12),width=30)   
BiaoTi1.grid(sticky = W,row=0,column=1)



P=[]
Q=[]
K=[]
G=[]
H=[]
H1=[]
B=[]
M=[]
M1=[]
C=[]
D=[]
E=[]
I=[]
II=[]
I1=[]
F=[]
F1=[]

b=0
def Calculate():
    a= Quantity.get()
    global b
    if b>int(a):
        for widget in frame2.winfo_children():
            widget.destroy()
    else:
        for t in range(int(a)):
            str="aa"
            str1="cc"
            str2="dd"
            str3="ee"
            str4="ff"
            str4_1="ff1"
            str5="gg"
            str6="hh"
            str6_1="hh1"
            
            X=str+a
            P.append(X)
            
            Y=str1+a
            Q.append(Y)
            Z=str2+a
            K.append(Z)
            
            R=str3+a
            G.append(R)

            T=str4+a
            T1=str4_1+a
            H.append(T)
            H1.append(T1)

            V=str5+a
            B.append(V)

            N=str6+a
            N1=str6_1+a
            M.append(N)
            M1.append(N1)

             
            print(X)
            b=int(a)
     
    for t in range(int(a)):    
        #创建标签
        K[t] = tkinter.Label(frame2,text='   请输入项目名:', justify=tkinter.RIGHT,width=14)
        K[t].grid(row=int(t),column=0)
        K[t].config(font=('隶书',12), justify=CENTER)

        P[t] = tkinter.StringVar()
        P[t].set('')
        #创建文本框,同时设置关联的变量
        Q[t] = tkinter.Entry(frame2,textvariable=P[t])   
        Q[t].grid(row=int(t),column=1)

        #创建标签
        G[t] = tkinter.Label(frame2,text='   进度:', justify=tkinter.RIGHT,width=8)
        G[t].grid(row=int(t),column=2)
        G[t].config(font=('隶书',12), justify=CENTER)

        
        H1[t] = tkinter.StringVar()
        H1[t].set('')
        #创建文本框,同时设置关联的变量
        H[t] = tkinter.Entry(frame2,textvariable=H1[t],width=5)   
        H[t].grid(row=int(t),column=3)

        #创建标签
        B[t] = tkinter.Label(frame2,text=' /', justify=tkinter.RIGHT,width=3)
        B[t].grid(row=int(t),column=4)
        B[t].config(font=('隶书',12), justify=CENTER)

        M1[t] = tkinter.StringVar()
        M1[t].set('')
        #创建文本框,同时设置关联的变量
        M[t] = tkinter.Entry(frame2,textvariable=M1[t],width=5)   
        M[t].grid(row=int(t),column=5)


Length =[0]
Thickness =[20]

for r in range(1,100):
    Length1 = Length[r-1]+ 10
    Thickness1 = Thickness[r-1]
    Length.append(Length1)
    Thickness.append(Thickness1)


DwellTime =0.025
def Acquire():
    I.clear()
    C.clear()
    D.clear()
    E.clear()


    a= Quantity.get()
    for t in range(int(a)):
        one=Q[t].get()     #项目框获取的名字
        print(one)

        two=H[t].get()     #进度框获取的分子
        print(two)

        three=M[t].get()   #进度框获取的分母
        print(three)

        four=BiaoTi.get()   #进度框获取的标题
        print(four)

        

        C.append(one)
        D.append(two)
        E.append(three)
        

    for t in range(int(a)):
        i=int(100*(int(D[t])/int(E[t])))
        print(i)
        I.append(i)
        print(I)

    

def Generate():
    
    for widget in frame3.winfo_children():
            widget.destroy()
    

    a= Quantity.get()
    image1 ="ww1.png"
    image2 ="ww2.png"
    photo1 =PhotoImage(file = image1)
    photo2 =PhotoImage(file = image2)
    
    four=BiaoTi.get()   #进度框获取的标题
    num3=StringVar()
   
    four1 = tkinter.Label(frame3,textvariable=num3,width=30,font=('隶书',18,"bold italic"), justify=CENTER)
    four1.grid(column=2)
    num3.set(num3.get()+str(four))

    
    for t in range(int(a)):
        str7="ii"
        NO=str7+str(t)
        F.append(NO)
        F[t] =Canvas(frame4,width=350, height=30)  
        F[t].grid(column=1,sticky = W,row=int(t)+1)

        str8="pp"
        NO1=str8+str(t)
        F1.append(NO1)
        num1=StringVar()
        F1[t] = Entry(frame4,textvariable=num1,width=10,state = 'readonly')
        F1[t].grid(row=int(t)+1,column=0,pady=4)
        num1.set(num1.get()+str(C[t]))

        
        width2 = photo2.width()
        height2 = photo2.height()
        image_Length =(width2)/2.0
        image_Thickness =(height2)/2.0

    for t in range(int(a)):
        for r in range(1,45):  #100/5=20
            F[t].create_image(Length[r], Thickness[r], image = photo2,tag ="pic")    #底部
            F[t].update()
            time.sleep(DwellTime)

    for t in range(int(a)):
        aaa=int(I[t])/3
        if aaa==0:
            aaa+=1
        for r in range(1,int(aaa)):
            F[t].create_image(Length[r], Thickness[r], image = photo1,tag ="pic")    #上层
            F[t].update()
            time.sleep(DwellTime)

    for t in range(int(a)):
        str9="mm"
        NO2=str9+str(t)
        I1.append(NO2)
        num2=StringVar()
        I1[t] = Entry(frame4,textvariable=num2,width=10,state = 'readonly')
        I1[t].grid(row=int(t)+1,column=2,pady=4,padx=10)
        num2.set(num2.get()+str(str(I[t])+"%"))

        
    animation.event_source.stop()
                
#-----------------------------------------


Notarize= Button(frame1,text="3、确认项目数量",borderwidth=18.5,bg="#dfe4b7",width=22)
Notarize.grid(row=3,column=0)
Notarize.config(font=('隶书',10),activebackground='#edff05',activeforeground='#edff05',command=Calculate)


Gain= Button(frame1,text="4、获取数据",borderwidth=18,bg="#dfe4b7",width=22)
Gain.grid(row=3,column=1)
Gain.config(font=('隶书',10),activebackground='#edff05',activeforeground='#edff05',command=Acquire)

Create= Button(frame1,text="5、生成数据",borderwidth=18,bg="#dfe4b7",width=22)
Create.grid(row=3,column=2)
Create.config(font=('隶书',10),activebackground='#edff05',activeforeground='#edff05',command=Generate)

附件

 进度条图像:【这里只提供标准大小格式,如果对颜色不满意的话可以自己保存下载后ps修改】

ww1.png分辨率:52*16
ww2.png分辨率:300*18

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZYT_庄彦涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值