$time_elapsed = timeAgo($time_ago); //The argument $time_ago is in timestamp (Y-m-d H:i:s)format.
//Function definition
function timeAgo($time_ago)
{
$time_ago = strtotime($time_ago);
$cur_time = time();
$time_elapsed = $cur_time - $time_ago;
$seconds = $time_elapsed ;
$minutes = round($time_elapsed / 60 );
$hours = round($time_elapsed / 3600);
$days = round($time_elapsed / 86400 );
$weeks = round($time_elapsed / 604800);
$months = round($time_elapsed / 2600640 );
$years = round($time_elapsed / 31207680 );
// Seconds
if($seconds <= 60){
return "just now";
}
//Minutes
else if($minutes <=60){
if($minutes==1){
return "one minute ago";
}
else{
return "$minutes minutes ago";
}
}
//Hours
else if($hours <=24){
if($hours==1){
return "an hour ago";
}else{
return "$hours hrs ago";
}
}
//Days
else if($days <= 7){
if($days==1){
return "yesterday";
}else{
return "$days days ago";
}
}
//Weeks
else if($weeks <= 4.3){
if($weeks==1){
return "a week ago";
}else{
return "$weeks weeks ago";
}
}
//Months
else if($months <=12){
if($months==1){
return "a month ago";
}else{
return "$months months ago";
}
}
//Years
else{
if($years==1){
return "one year ago";
}else{
return "$years years ago";
}
}
}
Вы не должны изменять (понимать и создавать) графический интерфейс из другого потока, идея состоит в том, чтобы посылать информацию о вторичном потоке через сигналы, чтобы мы могли сделать ServerManagement наследоваться от QObject, чтобы он мог создавать сигналы и в общая область между объектом ServerManagement и MainWindow для установления соединения:
class MainWindow(QWidget):
# ...
def addChatTab(self, nick, target, parent):
tab = ChatTab(target)
tab.setParent(parent) #where I get the eror
self.chatTabWidget.addTab(tab, nick)
self.chatTabs[nick] = tab
def foo_function(self, another_args)
# ... foo function is the method where you create the Server Management object
self.management = ServerManagement()
self.management.targetChanged.connect(self.update_gui)
#
@pyqtSlot(str)
def update_gui(self, targetTab):
if targetTab in self.chatTabs.keys(): #if tab is already there
self.getChatTab(targetTab).write(message)
else:
self.addChatTab(targetTab, sender, self) #create and add it to QTabWidget
self.getChatTab(targetTab).write(message)
class ServerManagement(QObject):
targetChanged = pyqtSignal(str)
def __init__(self, others_arguments):
super(ServerManagement, self).__init__()
# ...
def clientLoop(self): #runs in a different thread
# ...
if sender == settingsManager.getUserNick():
targetTab = receiver
else:
targetTab = sender
self.targetChanged.emit(targetTab)