Added a couple of methods to your code for getting time when added and returning when added. Converted all the time to seconds and used datetime to get it back to hours minutes and seconds. Initially shows 00:00. Based on the time taken it will change. Hope you understand and like this solution.
import sys import time from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QHBoxLayout, QVBoxLayout, QLineEdit, QLabel, QListWidget, QLCDNumber) from PyQt5.QtCore import * from PyQt5.QtGui import * import datetime class MainWindow(QWidget): def __init__(self): super().__init__() self.setWindowTitle("CS2316 Help Desk Queue") self.initUI() self.timer = QTimer() self.timer.timeout.connect(self.showlcd) self.timer.start(1000) self.showlcd() self.dict = {} self.avgTime() def initUI(self): self.lcd = QLCDNumber(self) self.setGeometry(30, 30, 600, 600) self.avg_time = QLCDNumber(self) palette = self.lcd.palette() palette.setColor(palette.Dark, QColor("black")) self.lcd.setPalette(palette) self.lcd.setSegmentStyle(QLCDNumber.Flat) hbox = QHBoxLayout() vbox = QVBoxLayout() hbox1 = QHBoxLayout() label = QLabel() label.setText("TAs on Duty:") hbox1.addWidget(label) Ta_entry = QLineEdit() hbox1.addWidget(Ta_entry) hbox2 = QHBoxLayout() label2 = QLabel() label2.setText("Enter Your Name:") hbox2.addWidget(label2) self.students_entry = QLineEdit() self.students_entry.textChanged.connect(self.s_lineEdit) hbox2.addWidget(self.students_entry) self.b1 = QPushButton("Add") self.b1.clicked.connect(self.on_b1_clicked) self.b1.setEnabled(False) self.b1.setStyleSheet('QPushButton {background-color: light grey; color: green;}') self.b2 = QPushButton("Remove") self.b2.clicked.connect(self.on_b2_clicked) self.b2.setEnabled(False) self.b2.setStyleSheet('QPushButton {background-color: light grey; color: red;}') self.student_list = QListWidget() self.student_list.itemSelectionChanged.connect(self.s_select) vbox.addLayout(hbox) hbox.addWidget(self.lcd) hbox.addWidget(self.avg_time) vbox.addLayout(hbox1) vbox.addWidget(self.student_list) vbox.addLayout(hbox2) vbox.addWidget(self.b1) vbox.addWidget(self.b2) self.setLayout(vbox) def on_b1_clicked(self): text = self.students_entry.text() self.addTime(text) self.student_list.addItem(text) self.b1.setEnabled(False) self.students_entry.clear() def on_b2_clicked(self): listItems = self.student_list.selectedItems() for item in listItems: self.student_list.takeItem(self.student_list.row(item)) self.removeTime(item) def s_lineEdit(self): if len(self.students_entry.text()) > 0 : self.b1.setEnabled(True) else: self.b1.setEnabled(False) def s_select(self): if self.student_list.selectedItems(): self.b2.setEnabled(True) else: self.b2.setEnabled(False) def returnTime(self): time = QTime.currentTime() return time def showlcd(self): time = self.returnTime() text = time.toString('hh:mm') self.lcd.display(text) def addTime(self,text): self.dict[text +" "+ self.returnTime().toString('hh:mm:ss')] = None print(self.dict) def removeTime(self,item): for i in self.dict.keys(): if i.split(" ")[0] == item.text(): self.dict[i] = self.returnTime().toString("hh:mm:ss") print(self.dict) self.avgTime() def avgTime(self): time_list = [] avg_time = "0:00:00" for key,val in self.dict.items(): if val is not None: add_time = list(map(int, key.split(" ")[1].split(":"))) remove_time = list(map(int, val.split(":"))) print(add_time, remove_time) time_list.append((remove_time[0]-add_time[0]) * 3600 + (remove_time[1]-add_time[1]) * 60 + (remove_time[2]-add_time[2])) if len(time_list) != 0: avg_time = str(datetime.timedelta(seconds=sum(time_list)/len(time_list))) # print(avg_time) # return avg_time self.avg_time.display(avg_time) if __name__ == '__main__': app = QApplication(sys.argv) main = MainWindow() main.show() sys.exit(app.exec_())
here is my python GUI code for a Tutors help desk, it allow to add and...