python编程工时计算_【python】实现一个python编程的小时钟!

2024-02-19 03:20

本文主要是介绍python编程工时计算_【python】实现一个python编程的小时钟!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1437351-20180813194744874-1143873886.png

2.GUI介绍

几个常用的Python GUI库:

(1)wxPython

(2)tkinter

(3)PyQt5

1437351-20180813194953501-1702040169.png

利用PyQt完成的项目效果展示:

1437351-20180813195114213-2039348551.png

1437351-20180813195138144-271596724.png

1437351-20180813195152541-709142637.png

1437351-20180813195209317-1995762734.png

1437351-20180813195256892-1494913642.png

【二 实现此次项目效果】

注意:后面代码都是在前面的基础上添加的;

>>>导入模块:

1 from PyQt5.QtGui import * #QtGui:对系统及窗口的操作

2 from PyQt5.QtCore import * #QtCore:包含一些核心的应用,例如时间模块等;

3 #QDesktopWidget:包含了屏幕的尺寸

4 from PyQt5.QtWidgets importQWidget,QDesktopWidget,QLCDNumber,QVBoxLayout,QApplication5 import sys

>>>先编写一个闹钟程序的主窗口:

1 #“ADD1”

2 classMyTime(QWidget):3 """

4 面向对象的特点:封装、继承、多态---(类、方法、数据)5 __init__是python语言里面的构造方法6 """

7 def __init__(self):8 #用于解决多重继承的问题

9 super().__init__()10 self.initUI()11

12 #绘制UI界面

13 definitUI(self):14 #窗口组件大小 250px像素 150

15 self.resize(250,150)16 #self.move(300,300)

17 #窗口标题:

18 self.setWindowTitle("创意小时钟-香")19 self.show()20 #“ADD2”

21 if __name__ == '__main__':22 #创建一个QT应用对象

23 app =QApplication(sys.argv)24 m_time =MyTime()25 sys.exit(app.exec_())26 #app.exex_()

>>> 此时运行程序就可以初步构建一个轮廓了,效果如下:

1437351-20180813200021150-280629723.png

>>>附截止目前的完整代码如下:

ContractedBlock.gif

ExpandedBlockStart.gif

1 from PyQt5.QtGui import * #QtGui:对系统及窗口的操作

2 from PyQt5.QtCore import * #QtCore:包含一些核心的应用,例如时间模块等;

3 #QDesktopWidget:包含了屏幕的尺寸

4 from PyQt5.QtWidgets importQWidget, QDesktopWidget, QLCDNumber, QVBoxLayout, QApplication5 importsys6

7 #“ADD1”

8 classMyTime(QWidget):9 """

10 面向对象的特点:封装、继承、多态---(类、方法、数据)11 __init__是python语言里面的构造方法12 """

13

14 def __init__(self):15 #用于解决多重继承的问题

16 super().__init__()17 self.initUI()18

19 #绘制UI界面

20

21 definitUI(self):22 #窗口组件大小 250px像素 150

23 self.resize(250, 150)24 #self.move(300,300)

25 #窗口标题:

26 self.setWindowTitle("创意小时钟-香")27 self.show()28

29 #“ADD2”

30 if __name__ == '__main__':31 #创建一个QT应用对象

32 app =QApplication(sys.argv)33 m_time =MyTime()34 sys.exit(app.exec_())35 #app.exex_()

View Code

窗口名字默认左上角,可以设置的;

>>>此时,时钟程序没有在正中心,因此进行继续编程解决这个问题:

1 #“ADD2”

2 #调用

3 self.move_center() #在initUI()方法的self.show()语句前面增加

4

5 #“ADD1”

6 defmove_center(self):7 #拿到主窗口的矩形

8 m_rect =self.frameGeometry()9 #获得整个屏幕的绝对值,从中得到屏幕的中心点

10 w_center_top =QDesktopWidget().availableGeometry().center()11 m_rect.moveCenter(w_center_top)12 #从左向右边移动,直到屏幕中间的位置

13 self.move(m_rect.topLeft())

>>>现在运行,时钟程序窗口居中了:

1437351-20180813200501456-1363987497.png

>>>附截止目前的完整代码如下:

ContractedBlock.gif

ExpandedBlockStart.gif

1 from PyQt5.QtGui import * #QtGui:对系统及窗口的操作

2 from PyQt5.QtCore import * #QtCore:包含一些核心的应用,例如时间模块等;

3 #QDesktopWidget:包含了屏幕的尺寸

4 from PyQt5.QtWidgets importQWidget, QDesktopWidget, QLCDNumber, QVBoxLayout, QApplication5 importsys, time6

7

8 classMyTime(QWidget):9 """

10 面向对象的特点:封装、继承、多态---(类、方法、数据)11 __init__是python语言里面的构造方法12 """

13

14 def __init__(self):15 #用于解决多重继承的问题

16 super().__init__()17 self.initUI()18 #绘制UI界面

19

20 definitUI(self):21 #窗口组件大小 250px 150

22 self.resize(250, 150)23 #self.move(300,300)

24 #窗口标题:

25 self.setWindowTitle("创意小时钟-香")26 #调用

27 self.move_center() #“ADD2”

28 self.show()29 #“ADD1”

30 defmove_center(self):31 #拿到主窗口的矩形

32 m_rect =self.frameGeometry()33 #获得整个屏幕的绝对值,从中得到屏幕的中心点

34 w_center_top =QDesktopWidget().availableGeometry().center()35 m_rect.moveCenter(w_center_top)36 #从左向右边移动,直到屏幕中间的位置

37

38

39 if __name__ == '__main__':40 #创建一个QT应用对象

41 app =QApplication(sys.argv)42 m_time =MyTime()43 sys.exit(app.exec_())44 #app.exex_()

View Code

>>>现在编程里面的LED数字时钟:

1 import time #“ADD1”:增加时间time模块

2

3 #“ADD2 在initUI()方法的self.show()语句后面增加

4 self.lcd =QLCDNumber()5 #设置显示的个数

6 self.lcd.setDigitCount(10)7 #设置显示的模式为十进制的

8 self.lcd.setMode(QLCDNumber.Dec)9 #设置显示的模式为 平面模式

10 self.lcd.setSegmentStyle(QLCDNumber.Flat)11 #获取本地时间

12 self.lcd.display(time.strftime("%X", time.localtime()))13 self.main_layout =QVBoxLayout()14 #将显示的组件添加到盒子布局里面

15 self.main_layout.addWidget(self.lcd)16 #设置组件在布局的中间位置

17 self.main_layout.setAlignment(Qt.AlignCenter)18 #设置给顶层布局

19 self.setLayout(self.main_layout)

>>>附截止目前的完整代码如下:

1 from PyQt5.QtGui import * #QtGui:对系统及窗口的操作

2 from PyQt5.QtCore import * #QtCore:包含一些核心的应用,例如时间模块等;

3 #QDesktopWidget:包含了屏幕的尺寸

4 from PyQt5.QtWidgets importQWidget, QDesktopWidget, QLCDNumber, QVBoxLayout, QApplication5 import sys,time #“ADD1”:增加时间time模块

6

7

8

9 classMyTime(QWidget):10 """

11 面向对象的特点:封装、继承、多态---(类、方法、数据)12 __init__是python语言里面的构造方法13 """

14

15 def __init__(self):16 #用于解决多重继承的问题

17 super().__init__()18 self.initUI()19

20 #绘制UI界面

21

22 definitUI(self):23 #窗口组件大小 250px像素 150

24 self.resize(250, 150)25 #self.move(300,300)

26 #窗口标题:

27 self.setWindowTitle("创意小时钟-香")28 #调用

29 self.move_center()30 self.show()31

32 #"ADD2

33 self.lcd =QLCDNumber()34 #设置显示的个数

35 self.lcd.setDigitCount(10)36 #设置显示的模式为十进制的

37 self.lcd.setMode(QLCDNumber.Dec)38 #设置显示的模式为 平面模式

39 self.lcd.setSegmentStyle(QLCDNumber.Flat)40 #获取本地时间

41 self.lcd.display(time.strftime("%X", time.localtime()))42 self.main_layout =QVBoxLayout()43 #将显示的组件添加到盒子布局里面

44 self.main_layout.addWidget(self.lcd)45 #设置组件在布局的中间位置

46 self.main_layout.setAlignment(Qt.AlignCenter)47 #设置给顶层布局

48 self.setLayout(self.main_layout)49

50 defmove_center(self):51 #拿到主窗口的矩形

52 m_rect =self.frameGeometry()53 #获得整个屏幕的绝对值,从中得到屏幕的中心点

54 w_center_top =QDesktopWidget().availableGeometry().center()55 m_rect.moveCenter(w_center_top)56 #从左向右边移动,直到屏幕中间的位置

57 self.move(m_rect.topLeft())58

59 if __name__ == '__main__':60 #创建一个QT应用对象

61 app =QApplication(sys.argv)62 m_time =MyTime()63 sys.exit(app.exec_())64 #app.exex_()

>>>现在运行一下,查看结果,但是现在的问题是,时钟上是静态的?

1437351-20180813200718539-1557423322.png

现在解决这个时钟实时更新这个问题。

>>>ADD1 写一个有关定时器的“槽与信号”的函数:

1 definit_timer(self):2 #提供了定时器信号和单出发定时器

3 self.timer =QTimer()4 #每间隔1秒就出发一次 timeout信号

5 self.timer.setInterval(1000)6 self.timer.start() #启动这个定时器

7 self.timer.timeout.connect(self.update_timer) #信号和槽函数

>>>ADD2写一个输出本地实时时间的函数:

1 defupdate_timer(self):2 #获取本地时间

3 self.lcd.display(time.strftime("%X", time.localtime()))

注意: 删除原来initUI()函数中的此行

# # 获取本地时间

# self.lcd.display(time.strftime("%X", time.localtime()))>>>ADD3:调用“信号与槽函数”

1 #ADD3:

2 self.init_timer()

>>>现在运行,结果时钟可以实时更新时间了:

1437351-20180813201123242-1560359128.png

>>>附截止目前的完整代码如下:

ContractedBlock.gif

ExpandedBlockStart.gif

1 from PyQt5.QtGui import * #QtGui:对系统及窗口的操作

2 from PyQt5.QtCore import * #QtCore:包含一些核心的应用,例如时间模块等;

3 #QDesktopWidget:包含了屏幕的尺寸

4 from PyQt5.QtWidgets importQWidget, QDesktopWidget, QLCDNumber, QVBoxLayout, QApplication5 import sys,time #“ADD1”

6

7

8

9 classMyTime(QWidget):10 """

11 面向对象的特点:封装、继承、多态---(类、方法、数据)12 __init__是python语言里面的构造方法13 """

14

15 def __init__(self):16 #用于解决多重继承的问题

17 super().__init__()18 self.initUI()19 #ADD3:

20 self.init_timer()21 #绘制UI界面

22 #ADD1:

23 definit_timer(self):24 #提供了定时器信号和单出发定时器

25 self.timer =QTimer()26 #每间隔1秒就出发一次 timeout信号

27 self.timer.setInterval(1000)28 self.timer.start() #启动这个定时器

29 self.timer.timeout.connect(self.update_timer) #信号和槽函数

30 #ADD2:

31 defupdate_timer(self):32 #获取本地时间

33 self.lcd.display(time.strftime("%X", time.localtime()))34

35 definitUI(self):36 #窗口组件大小 250px像素 150

37 self.resize(250, 150)38 #self.move(300,300)

39 #窗口标题:

40 self.setWindowTitle("创意小时钟-香")41 #调用

42 self.move_center()43 self.show()44

45 self.lcd =QLCDNumber()46 #设置显示的个数

47 self.lcd.setDigitCount(10)48 #设置显示的模式为十进制的

49 self.lcd.setMode(QLCDNumber.Dec)50 #设置显示的模式为 平面模式

51 self.lcd.setSegmentStyle(QLCDNumber.Flat)52

53 ## 获取本地时间

54 #self.lcd.display(time.strftime("%X", time.localtime()))

55 self.main_layout =QVBoxLayout()56 #将显示的组件添加到盒子布局里面

57 self.main_layout.addWidget(self.lcd)58 #设置组件在布局的中间位置

59 self.main_layout.setAlignment(Qt.AlignCenter)60 #设置给顶层布局

61 self.setLayout(self.main_layout)62

63 defmove_center(self):64 #拿到主窗口的矩形

65 m_rect =self.frameGeometry()66 #获得整个屏幕的绝对值,从中得到屏幕的中心点

67 w_center_top =QDesktopWidget().availableGeometry().center()68 m_rect.moveCenter(w_center_top)69 #从左向右边移动,直到屏幕中间的位置

70 self.move(m_rect.topLeft())71

72 if __name__ == '__main__':73 #创建一个QT应用对象

74 app =QApplication(sys.argv)75 m_time =MyTime()76 sys.exit(app.exec_())77 #app.exex_()

View Code

发现,它的背景颜色太单调了,这时PyQt5中有一个“调色板”:

>>>ADD1:实例化一个调色板

1 #实例化一个调色板

2 self.main_pl =QPalette()3 #设置背景颜色为深黄色

4 #self.main_pl.setColor(QPalette.Background,Qt.darkRed)

5 self.main_pl.setColor(QPalette.Background, Qt.darkYellow)6 #设置窗体自动填充背景颜色

7 self.setAutoFillBackground(True)8 self.setPalette(self.main_pl)

>>> 现在运行,查看结果:

1437351-20180813201332792-564271491.png

>>>附截止目前的完整代码如下:

ContractedBlock.gif

ExpandedBlockStart.gif

1 from PyQt5.QtGui import * #QtGui:对系统及窗口的操作

2 from PyQt5.QtCore import * #QtCore:包含一些核心的应用,例如时间模块等;

3 #QDesktopWidget:包含了屏幕的尺寸

4 from PyQt5.QtWidgets importQWidget, QDesktopWidget, QLCDNumber, QVBoxLayout, QApplication5 import sys,time #“ADD1”

6

7

8

9 classMyTime(QWidget):10 """

11 面向对象的特点:封装、继承、多态---(类、方法、数据)12 __init__是python语言里面的构造方法13 """

14

15 def __init__(self):16 #用于解决多重继承的问题

17 super().__init__()18 self.initUI()19 self.init_timer()20 #绘制UI界面

21

22 definit_timer(self):23 #提供了定时器信号和单出发定时器

24 self.timer =QTimer()25 #每间隔1秒就出发一次 timeout信号

26 self.timer.setInterval(1000)27 self.timer.start() #启动这个定时器

28 self.timer.timeout.connect(self.update_timer) #信号和槽函数

29

30 defupdate_timer(self):31 #获取本地时间

32 self.lcd.display(time.strftime("%X", time.localtime()))33

34 definitUI(self):35 #窗口组件大小 250px像素 150

36 self.resize(250, 150)37 #self.move(300,300)

38 #窗口标题:

39 self.setWindowTitle("创意小时钟-香")40 #调用

41 self.move_center()42 #ADD1:实例化一个调色板

43 #实例化一个调色板

44 self.main_pl =QPalette()45 #设置背景颜色为深黄色

46 #self.main_pl.setColor(QPalette.Background,Qt.darkRed)

47 self.main_pl.setColor(QPalette.Background, Qt.darkYellow)48 #设置窗体自动填充背景颜色

49 self.setAutoFillBackground(True)50 self.setPalette(self.main_pl)51

52 self.show()53 self.lcd =QLCDNumber()54 #设置显示的个数

55 self.lcd.setDigitCount(10)56 #设置显示的模式为十进制的

57 self.lcd.setMode(QLCDNumber.Dec)58 #设置显示的模式为 平面模式

59 self.lcd.setSegmentStyle(QLCDNumber.Flat)60

61 ## 获取本地时间

62 #self.lcd.display(time.strftime("%X", time.localtime()))

63 self.main_layout =QVBoxLayout()64 #将显示的组件添加到盒子布局里面

65 self.main_layout.addWidget(self.lcd)66 #设置组件在布局的中间位置

67 self.main_layout.setAlignment(Qt.AlignCenter)68 #设置给顶层布局

69 self.setLayout(self.main_layout)70

71 defmove_center(self):72 #拿到主窗口的矩形

73 m_rect =self.frameGeometry()74 #获得整个屏幕的绝对值,从中得到屏幕的中心点

75 w_center_top =QDesktopWidget().availableGeometry().center()76 m_rect.moveCenter(w_center_top)77 #从左向右边移动,直到屏幕中间的位置

78 self.move(m_rect.topLeft())79

80 if __name__ == '__main__':81 #创建一个QT应用对象

82 app =QApplication(sys.argv)83 m_time =MyTime()84 sys.exit(app.exec_())85 #app.exex_()

View Code

>>>最后此项目的完整代码如下:

1 from PyQt5.QtGui import * #QtGui:对系统及窗口的操作

2 from PyQt5.QtCore import * #QtCore:包含一些核心的应用,例如时间模块等;

3 #QDesktopWidget:包含了屏幕的尺寸

4 from PyQt5.QtWidgets importQWidget,QDesktopWidget,QLCDNumber,QVBoxLayout,QApplication5 importsys,time6

7

8 classMyTime(QWidget):9 """

10 面向对象的特点:封装、继承、多态---(类、方法、数据)11 __init__是python语言里面的构造方法12 """

13 def __init__(self): #self指的是类实例对象的本身(PS:不是类本身)

14 #用于解决多重继承的问题

15 super().__init__()16 self.initUI()17 self.init_timer()18 definit_timer(self):19 #提供了定时器信号和单出发定时器

20 self.timer =QTimer()21 #每间隔1秒就出发一次 timeout信号

22 self.timer.setInterval(1000)23 self.timer.start() #启动这个定时器

24 self.timer.timeout.connect(self.update_timer) #信号和槽函数

25 defupdate_timer(self):26 #获取本地时间

27 self.lcd.display(time.strftime("%X", time.localtime()))28

29

30

31 #绘制UI界面

32 definitUI(self):33 #窗口组件大小 250px 150

34 self.resize(250,150)35 #self.move(300,300)

36 #窗口标题:

37 self.setWindowTitle("创意小时钟-香")38 #调用

39 self.move_center()40

41 #实例化一个调色板

42 self.main_pl =QPalette()43 #设置背景颜色为深黄色

44 #self.main_pl.setColor(QPalette.Background,Qt.darkRed)

45 self.main_pl.setColor(QPalette.Background, Qt.darkYellow)46 #设置窗体自动填充背景颜色

47 self.setAutoFillBackground(True)48 self.setPalette(self.main_pl)49

50 #字体颜色的设置:这里有问题:

51 #self.main_pl = QPalette()

52 #self.main_pl.setColor(QPalette.Normal, QPalette.windowText,Qt.darkBlue)

53 #self.setAutoFillBackground(True)

54 #self.setPalette(self.main_pl)

55

56 #显示布局

57 self.show()58

59 self.lcd =QLCDNumber()60 #设置显示的个数

61 self.lcd.setDigitCount(10)62 #设置显示的模式为十进制的

63 self.lcd.setMode(QLCDNumber.Dec)64 #设置显示的模式为 平面模式

65 self.lcd.setSegmentStyle(QLCDNumber.Flat)66 #实例化盒子布局

67 self.main_layout =QVBoxLayout()68 #将显示的组件添加到盒子布局里面

69 self.main_layout.addWidget(self.lcd)70 #设置组件在布局的中间位置

71 self.main_layout.setAlignment(Qt.AlignCenter)72 #设置给顶层布局

73 self.setLayout(self.main_layout)74

75 defmove_center(self):76 #拿到主窗口的矩形

77 m_rect =self.frameGeometry()78 #获得整个屏幕的绝对值,从中得到屏幕的中心点

79 w_center_top =QDesktopWidget().availableGeometry().center()80 m_rect.moveCenter(w_center_top)81 #从左向右边移动,直到屏幕中间的位置

82 self.move(m_rect.topLeft())83 if __name__ == '__main__':84 #创建一个QT应用对象

85 app =QApplication(sys.argv)86 m_time =MyTime()87 sys.exit(app.exec_())88 #app.exex_()

The end!

1437351-20180813202046059-1334055888.png

**************************************************************************************************

Good lucky to you

**************************************************************************************************

这篇关于python编程工时计算_【python】实现一个python编程的小时钟!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/723345

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

如何让你的一天有36小时

你经常听人说“真希望一天能多几个小时”或者类似的话吗?当然,现实中我们每天只有24小时。这么说吧,人和人怎样度过这24个小时是完全不同的。到现在这样的说法已经成了陈词滥调,但我们的24小时和Thomas Edison与Mother Theresa曾拥有的相同,和Oprah Winfrey与Bill Gates 今天拥有的也相同。就像老歌里唱的,“It’s in the way that yo

计算绕原点旋转某角度后的点的坐标

问题: A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示 方法一: 设 OA 向量和x轴的角度为 alpha , 那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。 使用圆的参数方程来表示点坐标。A的坐标可以表示为: \[\left\{ {\begin{ar

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

16.Spring前世今生与Spring编程思想

1.1.课程目标 1、通过对本章内容的学习,可以掌握Spring的基本架构及各子模块之间的依赖关系。 2、 了解Spring的发展历史,启发思维。 3、 对 Spring形成一个整体的认识,为之后的深入学习做铺垫。 4、 通过对本章内容的学习,可以了解Spring版本升级的规律,从而应用到自己的系统升级版本命名。 5、Spring编程思想总结。 1.2.内容定位 Spring使用经验

通过SSH隧道实现通过远程服务器上外网

搭建隧道 autossh -M 0 -f -D 1080 -C -N user1@remotehost##验证隧道是否生效,查看1080端口是否启动netstat -tuln | grep 1080## 测试ssh 隧道是否生效curl -x socks5h://127.0.0.1:1080 -I http://www.github.com 将autossh 设置为服务,隧道开机启动

Python 字符串占位

在Python中,可以使用字符串的格式化方法来实现字符串的占位。常见的方法有百分号操作符 % 以及 str.format() 方法 百分号操作符 % name = "张三"age = 20message = "我叫%s,今年%d岁。" % (name, age)print(message) # 我叫张三,今年20岁。 str.format() 方法 name = "张三"age

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测

时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测 目录 时序预测 | MATLAB实现LSTM时间序列未来多步预测-递归预测基本介绍程序设计参考资料 基本介绍 MATLAB实现LSTM时间序列未来多步预测-递归预测。LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为

vue项目集成CanvasEditor实现Word在线编辑器

CanvasEditor实现Word在线编辑器 官网文档:https://hufe.club/canvas-editor-docs/guide/schema.html 源码地址:https://github.com/Hufe921/canvas-editor 前提声明: 由于CanvasEditor目前不支持vue、react 等框架开箱即用版,所以需要我们去Git下载源码,拿到其中两个主

android一键分享功能部分实现

为什么叫做部分实现呢,其实是我只实现一部分的分享。如新浪微博,那还有没去实现的是微信分享。还有一部分奇怪的问题:我QQ分享跟QQ空间的分享功能,我都没配置key那些都是原本集成就有的key也可以实现分享,谁清楚的麻烦详解下。 实现分享功能我们可以去www.mob.com这个网站集成。免费的,而且还有短信验证功能。等这分享研究完后就研究下短信验证功能。 开始实现步骤(新浪分享,以下是本人自己实现