1
1
import sys
2
- from PyQt5 import QtWidgets , QtCore
2
+ from PyQt5 import QtWidgets , QtCore , QtGui
3
3
4
4
5
5
class TardisDiff (QtWidgets .QMainWindow ):
6
6
def __init__ (self ):
7
7
super (TardisDiff , self ).__init__ ()
8
+ self .diff = 0
9
+
10
+ self .clipboard = QtWidgets .QApplication .clipboard ()
11
+ QtWidgets .QShortcut (QtGui .QKeySequence ("Ctrl+Shift+C" ), self , self .setClipboard )
8
12
self .initUI ()
9
13
10
14
def initUI (self ):
@@ -14,17 +18,22 @@ def initUI(self):
14
18
self .formLayout = QtWidgets .QFormLayout ()
15
19
self .label_time1 = QtWidgets .QLabel (self .centralwidget )
16
20
self .label_time2 = QtWidgets .QLabel (self .centralwidget )
21
+ self .label_time3 = QtWidgets .QLabel (self .centralwidget )
17
22
self .timeEdit1 = QtWidgets .QTimeEdit (self .centralwidget )
18
23
self .timeEdit2 = QtWidgets .QTimeEdit (self .centralwidget )
24
+ self .timeEdit3 = QtWidgets .QTimeEdit (self .centralwidget )
19
25
self .label_timeDiff = QtWidgets .QLabel (self .centralwidget )
20
26
self .label_timeDiffOut = QtWidgets .QLabel (self .centralwidget )
21
27
22
28
self .label_time1 .setText ("Time 1:" )
23
29
self .label_time2 .setText ("Time 2:" )
30
+ self .label_time3 .setText ("Break Time:" )
24
31
self .label_timeDiff .setText ("Difference" )
25
32
self .label_timeDiffOut .setText ("" )
26
33
self .timeEdit1 .setTime (QtCore .QTime (8 , 0 ))
27
- self .timeEdit2 .setTime (QtCore .QTime (17 , 0 ))
34
+ currentTime = QtCore .QTime .currentTime ()
35
+ currentTime .setHMS (currentTime .hour (), currentTime .minute (), 0 )
36
+ self .timeEdit2 .setTime (currentTime )
28
37
29
38
#Set relations
30
39
self .formLayout .setWidget (0 , QtWidgets .QFormLayout .LabelRole ,
@@ -36,8 +45,12 @@ def initUI(self):
36
45
self .formLayout .setWidget (1 , QtWidgets .QFormLayout .FieldRole ,
37
46
self .timeEdit2 )
38
47
self .formLayout .setWidget (2 , QtWidgets .QFormLayout .LabelRole ,
39
- self .label_timeDiff )
48
+ self .label_time3 )
40
49
self .formLayout .setWidget (2 , QtWidgets .QFormLayout .FieldRole ,
50
+ self .timeEdit3 )
51
+ self .formLayout .setWidget (3 , QtWidgets .QFormLayout .LabelRole ,
52
+ self .label_timeDiff )
53
+ self .formLayout .setWidget (3 , QtWidgets .QFormLayout .FieldRole ,
41
54
self .label_timeDiffOut )
42
55
self .gridLayout .addLayout (self .formLayout , 0 , 0 , 1 , 1 )
43
56
self .setCentralWidget (self .centralwidget )
@@ -47,17 +60,31 @@ def initUI(self):
47
60
#connect slots
48
61
self .timeEdit1 .timeChanged .connect (self .inputChanged )
49
62
self .timeEdit2 .timeChanged .connect (self .inputChanged )
63
+ self .timeEdit3 .timeChanged .connect (self .inputChanged )
50
64
51
65
self .setWindowTitle ('TardisDiff' )
52
66
QtCore .QMetaObject .connectSlotsByName (self )
53
-
67
+ self . inputChanged ()
54
68
self .show ()
55
69
56
70
def inputChanged (self ):
71
+ """
72
+ Checks both time inputs and the break time input to determine the difference.
73
+ Then calls the method to update the ui.
74
+ """
57
75
time1 = self .timeEdit1 .time ()
58
76
time2 = self .timeEdit2 .time ()
59
- diff = time1 .secsTo (time2 )
60
- self .label_timeDiffOut .setText (str (diff / 3600 ))
77
+ breakTime = self .timeEdit3 .time ().secsTo (QtCore .QTime (0 , 0 ))
78
+ self .diff = (time1 .secsTo (time2 ) + breakTime ) / 3600
79
+ self .diff = round (self .diff , 2 )
80
+ self .label_timeDiffOut .setText (str (self .diff ))
81
+
82
+ def setClipboard (self ):
83
+ """Sets the current diff text to clipboard"""
84
+ self .clipboard .setText (str (self .diff ))
85
+ self .statusBar ().showMessage ("Copied to clipboard." )
86
+
87
+
61
88
62
89
63
90
def main ():
0 commit comments