一、简介

比较重要的机房、动力供电等运维场景中,一般需要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小时值班表生成小程序【简单粗暴】相关推荐

  1. exe软件打包工具哪个好_小视频制作软件哪个好?推荐五款超赞小视频制作工具...

    我们每天都会刷很多小视频,你是否也想自己制作小视频?只要拥有一款视频制作利器,你也能快速做出获赞无数的小视频,本文给你介绍五款非常实用的,推荐一试! 小视频制作工具推荐 小视频制作工具推荐 蜜蜂剪辑 ...

  2. c语言switch写值班表,如何用asp编写按周轮换的值班表?例,1月份的值班领导有4位,怎样写可以让4位领导的名字自动到时间显示...

    如何用asp编写按周轮换的值班表?例,1月份的值班领导有4位,怎样写可以让4位领导的名字自动到时间显示以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容 ...

  3. 算法:将一天24小时按每半小划分成48段

    将一天24小时按每半小划分成48段,我们用一个位图表示选中的时间区间,例如110000000000000000000000000000000000000000000000,表示第一个半小时和第二个半小 ...

  4. “1000瓶药水,其中至多有1瓶剧毒,小狗服完药20小时后才能判断是否中毒。现在给你10只小狗、在24小时内、通过小狗试药的方式找出哪瓶药有毒或者全部无毒”

    题目: 1000瓶药水,其中至多有1瓶剧毒,小狗服完药20小时后才能判断是否中毒. 现在给你10只小狗.在24小时内.通过小狗试药的方式找出哪瓶药有毒或者全部无毒 思路: 一."小狗服完药2 ...

  5. 弹球游戏python代码含记分模式_python编写弹球游戏的实现代码

    用Blender制作一个兵乓球小游戏,要编写Python代码需要安装pygame 包没有面对困难的勇气,也就没有享受快乐的权利. python 怎么写双人弹球游戏最难过的事不是别人又得罪你了,而是你自 ...

  6. python编程入门第一课_python入门前的第一课 python怎样入门

    人工智能时代的到来,很多文章说这么一句:"不会python,就不要说自己是程序员",这说的有点夸张了,但确实觉得目前python这个语言值得学习,而且会python是高薪程序员的必 ...

  7. python编程免费教程电子书_python编程从入门到实践PDF电子书教程免费下载

    本书是一本针对所有层次的 Python 读者而作的 Python 入门书.全书分两部分 :第一部分介绍用 Python 编程所必须了解的基本概念,包括 matplotlib.NumPy 和 Pygal ...

  8. python编程*三角形图形创意图片_python循环输出三角形图案的例子

    我就废话不多说了,直接上代码吧! #Copyright (c)2017, 东北大学软件学院学生 # All rightsreserved #文件名称:a.py #作 者:孔云 #问题描述:编写程序,使 ...

  9. python编程入门详解_python编程入门知识练习

    python 入门基础知识练习 1编写第一个程序,目前使用的都是python 3 # print('hello world!') 2.查看当前python编辑器的版本号 # python -v 3.使 ...

最新文章

  1. 【Python】Numpy简单入门
  2. 哪些品牌开始连接鸿蒙系统,华为鸿蒙系统硬件生态品牌升级为 HarmonyOS Connect
  3. php后台数据显示到前端,php,前端_怎么在javascript中得到后台数据?,php,前端,javascript,highcharts - phpStudy...
  4. Microsoft MSDN Windows 8 各版本下载
  5. 在jsp页面实现保存登录用户名和密码
  6. php基础是什么,php基础学什么?
  7. python学习感悟第3节
  8. 【小项目】学生信息登记系统
  9. Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的
  10. C语言中 二维数组在内存中的存放顺序是,在计算机中二维数组的元素是按行顺序存放的,即在内存中,先顺序存放二维数组第一行的元素,再顺序存放二维数组第二行的元素,以此类推 答案:对...
  11. 关于adb no serial number的解决方案
  12. lisp语言画地物符号_地形图中的地物符号说明
  13. 自适应滤波器5-最小二乘法(LSM)
  14. 南开100题C语言(011-020)
  15. java卸载错误2503_修复控制面板卸载程序时提示错误代码2502、2503的方法
  16. 服务器主板安装win10系统,装win10主板怎么设置_装win10主板设置教程 - 系统家园...
  17. B0505S-1WR3 隔离模块DC/DC
  18. MT4/MQL4入门到精通EA教程第六课-MQL语言常用函数(六)-常用订单功能函数
  19. 解决tomcat安装配置后localhost 打不开
  20. matlab分布式计算报告,简单的matlab分布式计算

热门文章

  1. Vue组件库 View UI 来看看这80种奇奇怪怪的按钮
  2. MPD大会上使用的PPT分享
  3. openlayers标注面要素
  4. leetcode 第344题 (Java实现) 字符串反转
  5. 欧姆龙 PLC CP1E Modbus RTU通信程序
  6. 1362: [蓝桥杯2018初赛]第几个幸运数(简单题)
  7. Spring-StopWatch的使用
  8. 6. 【三态门】 74LS244 + 【锁存器】 74LS273
  9. 3月第1周业务风控关注 工信部曝光695款违规App近九成涉捆绑推广
  10. Video标签播放视频(动态视频URL)