用python编程小程序制作_Python编写四人24小时值班表生成小程序【简单粗暴】
一、简介
比较重要的机房、动力供电等运维场景中,一般需要24小时有人值班,领导往往会在每个月前整理一个Excel值班表格。每次手工制作表格比较浪费时间,所以这里花了一点时间,用Python代码实现自动导出Excel值班表的功能。
实现场景:
共4个人值班,白夜和夜班两班倒,这里假设四个人分别称为为A,B,C,D。
以第一个人A为例,A第一天上白班;第二天白班A休息,然后上夜班;第三天、第四天休息两天;第五天又开始上白班……简单地说“白班–>夜班–>休两天”然后再“白班–>夜班–>休两天”,以此轮流,每个人都一样(全年没有节假日和周末),如下图:
二、实现步骤
1.思路
表头:先根据实际情况,定义一个表头列表,for循环根据行和列规则写入Excel;
日期:获取当月天数后,参考表头规则写入Excel即可;
白班和夜班:首先定义一个循环阶段的所有值班人员为一个列表,然后定义一个规则,每次取第一个人员开始值班,取完后从列表中拿掉,拿掉后放在列表的尾部,以此取值,后续不断循环。
UI界面:写完以上内容到Excel后,可以加入一个图形界面,方便使用,如下简单粗暴的界面:
2.代码
1.使用到的模块:
from xlsxwriter import workbook
import datetime,calendar
from tkinter.ttk import *
from tkinter import *
import tkinter.messagebox
import os
2.UI窗口类:Schedule_Gui
class Schedule_Gui:
def __init__(self,initWindow):
self.initWindow = initWindow
def set_init_window(self):
#self.initWindow = Tk()
self.nw = 0.1
self.nh = 0.2
self.initWindow.title("24h值班表生成工具 - Author: 张琼杰")
self.initWindow.geometry('1000x700')
self.initWindow.resizable(0,0)
self.importExcelButton = Button(self.initWindow,text='导出Excel',width='8',bg='lightblue',command=self.WriteToExcel)
self.importExcelButton.place(relx=0.49,rely=self.nh+0.4)
mainmenu = Menu(self.initWindow)
menuFile = Menu(mainmenu)
mainmenu.add_cascade(label='文件',menu=menuFile)
menuFile.add_command(label='退出',command=self.initWindow.destroy)
self.initWindow.config(menu=mainmenu)
if (os.path.isfile("images\logo.png")):
self.backgroundImage = tkinter.PhotoImage(file=r"images\logo.png",width=300,height=110)
self.imageLabel = Label(self.initWindow, image=self.backgroundImage)
self.initWindow.update()
self.bg_width = self.backgroundImage.width()/self.initWindow.winfo_width()
self.bg_height = self.backgroundImage.height()/self.initWindow.winfo_height()
self.imageLabel.place(relx=1-self.bg_width, rely=0, width=300, height=110)
self.ProLabel = Label(self.initWindow, text='当前月份')
self.ProLabel.place(relx=0.1, rely=self.nh+0.1, relwidth=0.1)
self.ProCombobox = Combobox(self.initWindow, textvariable=vars, values=[''])
self.ProCombobox.place(relx=0.18, rely=self.nh+0.1, relwidth=0.1)
self.ProCombobox.set(value=str(datetime.datetime.now().month)+"月")
self.pathLabel = Label(self.initWindow, text='保存路径')
self.pathLabel.place(relx=0.1, rely=self.nh+0.2, relwidth=0.1)
self.defaultPath = tkinter.StringVar(value='D:\\')
self.pathEntry = Entry(self.initWindow, bd=3,textvariable=self.defaultPath)
self.pathEntry.place(relx=0.18, rely=self.nh+0.2, relwidth=0.3)
def WriteToExcel(self):
if(self.ProCombobox.get() != '' and self.pathEntry.get() != ''):
path = self.pathEntry.get()
try:
if(os.path.exists(path)):
if (path[len(path) - 1] == '\\'):
filePath = path + "24h_Schedule" + ".xlsx"
else:
filePath = path + "\\" + "24h_Schedule" + ".xlsx"
print(filePath)
sche = Schedule_Export()
sche.export_schedule(filePath)
else:
tkinter.messagebox.showerror(title="错误:",message="路径不存在!")
except:
tkinter.messagebox.showwarning(title="警告:",message="此文件可能已打开,请关闭后重试!")
else:
tkinter.messagebox.showinfo(title="提示:",message="请补全内容后重试!")
3.主代码逻辑操作类:Schedule_Export
您暂时无权查看此隐藏内容!
4.调用:
def main():
gui = Tk()
gui.update()
agui = Schedule_Gui(gui)
agui.set_init_window()
gui.mainloop()
if __name__ == "__main__":
main()
3.打包py文件为exe格式文件
打包完就可以愉快地使用了,此实现功能比较简单,仅供参考,后续可能在此基础添加其他功能。
内容查看价格9.9元立即支付
注意:本站部分资源网络收集,如涉及版权问题请及时与站长联系,我们会在第一时间内与您协商解决。如非特殊说明,本站所有资源解压密码均为:zhangqiongjie.com。
客服:1923002089
用python编程小程序制作_Python编写四人24小时值班表生成小程序【简单粗暴】相关推荐
- exe软件打包工具哪个好_小视频制作软件哪个好?推荐五款超赞小视频制作工具...
我们每天都会刷很多小视频,你是否也想自己制作小视频?只要拥有一款视频制作利器,你也能快速做出获赞无数的小视频,本文给你介绍五款非常实用的,推荐一试! 小视频制作工具推荐 小视频制作工具推荐 蜜蜂剪辑 ...
- c语言switch写值班表,如何用asp编写按周轮换的值班表?例,1月份的值班领导有4位,怎样写可以让4位领导的名字自动到时间显示...
如何用asp编写按周轮换的值班表?例,1月份的值班领导有4位,怎样写可以让4位领导的名字自动到时间显示以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容 ...
- 算法:将一天24小时按每半小划分成48段
将一天24小时按每半小划分成48段,我们用一个位图表示选中的时间区间,例如110000000000000000000000000000000000000000000000,表示第一个半小时和第二个半小 ...
- “1000瓶药水,其中至多有1瓶剧毒,小狗服完药20小时后才能判断是否中毒。现在给你10只小狗、在24小时内、通过小狗试药的方式找出哪瓶药有毒或者全部无毒”
题目: 1000瓶药水,其中至多有1瓶剧毒,小狗服完药20小时后才能判断是否中毒. 现在给你10只小狗.在24小时内.通过小狗试药的方式找出哪瓶药有毒或者全部无毒 思路: 一."小狗服完药2 ...
- 弹球游戏python代码含记分模式_python编写弹球游戏的实现代码
用Blender制作一个兵乓球小游戏,要编写Python代码需要安装pygame 包没有面对困难的勇气,也就没有享受快乐的权利. python 怎么写双人弹球游戏最难过的事不是别人又得罪你了,而是你自 ...
- python编程入门第一课_python入门前的第一课 python怎样入门
人工智能时代的到来,很多文章说这么一句:"不会python,就不要说自己是程序员",这说的有点夸张了,但确实觉得目前python这个语言值得学习,而且会python是高薪程序员的必 ...
- python编程免费教程电子书_python编程从入门到实践PDF电子书教程免费下载
本书是一本针对所有层次的 Python 读者而作的 Python 入门书.全书分两部分 :第一部分介绍用 Python 编程所必须了解的基本概念,包括 matplotlib.NumPy 和 Pygal ...
- python编程*三角形图形创意图片_python循环输出三角形图案的例子
我就废话不多说了,直接上代码吧! #Copyright (c)2017, 东北大学软件学院学生 # All rightsreserved #文件名称:a.py #作 者:孔云 #问题描述:编写程序,使 ...
- python编程入门详解_python编程入门知识练习
python 入门基础知识练习 1编写第一个程序,目前使用的都是python 3 # print('hello world!') 2.查看当前python编辑器的版本号 # python -v 3.使 ...
最新文章
- 【Python】Numpy简单入门
- 哪些品牌开始连接鸿蒙系统,华为鸿蒙系统硬件生态品牌升级为 HarmonyOS Connect
- php后台数据显示到前端,php,前端_怎么在javascript中得到后台数据?,php,前端,javascript,highcharts - phpStudy...
- Microsoft MSDN Windows 8 各版本下载
- 在jsp页面实现保存登录用户名和密码
- php基础是什么,php基础学什么?
- python学习感悟第3节
- 【小项目】学生信息登记系统
- Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的
- C语言中 二维数组在内存中的存放顺序是,在计算机中二维数组的元素是按行顺序存放的,即在内存中,先顺序存放二维数组第一行的元素,再顺序存放二维数组第二行的元素,以此类推 答案:对...
- 关于adb no serial number的解决方案
- lisp语言画地物符号_地形图中的地物符号说明
- 自适应滤波器5-最小二乘法(LSM)
- 南开100题C语言(011-020)
- java卸载错误2503_修复控制面板卸载程序时提示错误代码2502、2503的方法
- 服务器主板安装win10系统,装win10主板怎么设置_装win10主板设置教程 - 系统家园...
- B0505S-1WR3 隔离模块DC/DC
- MT4/MQL4入门到精通EA教程第六课-MQL语言常用函数(六)-常用订单功能函数
- 解决tomcat安装配置后localhost 打不开
- matlab分布式计算报告,简单的matlab分布式计算