目录
视频展示
序言
历经四个月总共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 |